Created
December 6, 2020 23:39
-
-
Save junlarsen/afe19c61ba4e83b58d2fe5c347bd4647 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
grammar Slede8; | |
program | |
: (programNode | NL)+ | |
; | |
programNode | |
: (instruction NL) | |
| block | |
; | |
instruction | |
: KW_SETT REGISTER COMMA (REGISTER | INTEGER) #instructionSett | |
| KW_NOPE #instructionNope | |
| KW_STOPP #instructionStopp | |
| KW_OG REGISTER COMMA REGISTER #instructionOg | |
| KW_ELLER REGISTER COMMA REGISTER #instructionEller | |
| KW_XELLER REGISTER COMMA REGISTER #instructionXEller | |
| KW_VSKIFT REGISTER COMMA REGISTER #instructionVSkift | |
| KW_HSKIFT REGISTER COMMA REGISTER #instructionHSkift | |
| KW_PLUSS REGISTER COMMA REGISTER #instructionPluss | |
| KW_MINUS REGISTER COMMA REGISTER #instructionMinus | |
| KW_LIK REGISTER COMMA REGISTER #instructionLik | |
| KW_ULIK REGISTER COMMA REGISTER #instructionUlik | |
| KW_ME REGISTER COMMA REGISTER #instructionMe | |
| KW_MEL REGISTER COMMA REGISTER #instructionMel | |
| KW_SE REGISTER COMMA REGISTER #instructionSe | |
| KW_SEL REGISTER COMMA REGISTER #instructionSel | |
| KW_HOPP (LABEL | ADDRESS) #instructionHopp | |
| KW_BHOPP (LABEL | ADDRESS) #instructionBHopp | |
| KW_LES REGISTER #instructionLes | |
| KW_SKRIV (REGISTER | INTEGER) #instructionSkriv | |
| KW_TUR (LABEL | ADDRESS) #instructionTur | |
| KW_RETUR #instructionRetur | |
| KW_FINN (LABEL | ADDRESS) #instructionFinn | |
| KW_LAST REGISTER #instructionLast | |
| KW_LAGR REGISTER #instructionLagr | |
| KW_DATA INTEGER (COMMA INTEGER)* #instructionData | |
; | |
block | |
: LABEL COLON NL (instruction NL) (instruction NL)* | |
; | |
KW_SETT : 'SETT'; | |
KW_NOPE : 'NOPE'; | |
KW_STOPP : 'STOPP'; | |
KW_OG : 'OG'; | |
KW_ELLER : 'ELLER'; | |
KW_XELLER : 'XELLER'; | |
KW_VSKIFT : 'VSKIFT'; | |
KW_HSKIFT : 'HSKIFT'; | |
KW_PLUSS : 'PLUSS'; | |
KW_MINUS : 'MINUS'; | |
KW_LIK : 'LIK'; | |
KW_ULIK : 'ULIK'; | |
KW_ME : 'ME'; | |
KW_MEL : 'MEL'; | |
KW_SE : 'SE'; | |
KW_SEL : 'SEL'; | |
KW_HOPP : 'HOPP'; | |
KW_BHOPP : 'BHOPP'; | |
KW_LES : 'LES'; | |
KW_SKRIV : 'SKRIV'; | |
KW_FINN : 'FINN'; | |
KW_LAST : 'LAST'; | |
KW_LAGR : 'LAGR'; | |
KW_TUR : 'TUR'; | |
KW_RETUR : 'RETUR'; | |
KW_DATA : '.DATA'; | |
REGISTER : 'r' [0-9]+; | |
INTEGER : HEXADECIMAL_INTEGER | DECIMAL_INTEGER; | |
LABEL : [0-9a-zA-ZæøåÆØÅ\-_]+; | |
ADDRESS : HEXADECIMAL_INTEGER; | |
fragment DECIMAL_INTEGER : [0-9]+; | |
fragment HEXADECIMAL_INTEGER : '0x' [0-9a-fA-F]+; | |
COLON : ':'; | |
COMMA : ','; | |
COMMENT : ';' ~[\r\n]* -> channel(HIDDEN); | |
WHITESPACE : [ \t\r] -> channel(HIDDEN); | |
NL : [\n]; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment