Created
June 29, 2021 13:13
-
-
Save kaby76/f50080dd5fdcb5ffdabbe70b44e4debe to your computer and use it in GitHub Desktop.
Translation of github.com/antlr/grammars-v4/abb/*.g4 to Lark
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
start : module | |
module : moduledata | |
moduledata : MODULE modulename NEWLINE datalist NEWLINE* ENDMODULE | |
modulename : IDENTIFIER | |
| proccall | |
datalist : (NEWLINE | |
| declaration NEWLINE | |
| procedure NEWLINE)* | |
procedure : PROC proccall NEWLINE (functioncall NEWLINE)* ENDPROC | |
proccall : procname procparameter? | |
procname : IDENTIFIER | |
procparameter : BRACKET_OPEN IDENTIFIER? BRACKET_CLOSE | |
functioncall : IDENTIFIER (functionparameter COMMA)* functionparameter SEMICOLON | |
functionparameter : ON_CALL | |
| OFF_CALL | |
| primitive | |
| IDENTIFIER | |
declaration : init_ type_ IDENTIFIER (EQUALS expression)? SEMICOLON | |
type_ : ( TOOLDATA | WOBJDATA | SPEEDDATA | ZONEDATA | CLOCK | BOOL ) | |
init_ : LOCAL? ( CONST | PERS | VAR ) | |
expression : array_ | primitive | |
array_ : SQUARE_OPEN (expression COMMA)* expression SQUARE_CLOSE | |
primitive : BOOLLITERAL | |
| CHARLITERAL | |
| STRINGLITERAL | |
| (PLUS | MINUS)? FLOATLITERAL | |
| (PLUS | MINUS)? INTLITERAL | |
MODULE : "module" | |
ENDMODULE : "endmodule" | |
PROC : P R O C | |
ENDPROC : E N D P R O C | |
LOCAL : L O C A L | |
CONST : C O N S T | |
PERS : P E R S | |
VAR : V A R | |
TOOLDATA : T O O L D A T A | |
WOBJDATA : W O B J D A T A | |
SPEEDDATA : S P E E D D A T A | |
ZONEDATA : Z O N E D A T A | |
CLOCK : C L O C K | |
BOOL : B O O L | |
ON_CALL : "\\" O N | |
OFF_CALL : "\\" O F F | |
SLASH : "/" | |
EQUALS : ":=" | |
COMMA : "," | |
CURLY_OPEN : "{" | |
CURLY_CLOSE : "}" | |
COLON : ":" | |
SEMICOLON : ";" | |
BRACKET_OPEN : "(" | |
BRACKET_CLOSE : ")" | |
SQUARE_OPEN : "[" | |
SQUARE_CLOSE : "]" | |
DOT : "." | |
DOUBLEDOT : ".." | |
REL_BIGGER : ">" | |
REL_BIGGER_OR_EQUAL : ">=" | |
REL_SMALLER : "<" | |
REL_SMALLER_OR_EQUAL: "<=" | |
REL_EQUAL : "==" | |
REL_NOTEQUAL : "<>" | |
PLUS : "+" | |
MINUS : "-" | |
MULTIPLY : "*" | |
PERCENT : "%" | |
HASH : "#" | |
A : ("a" | "A") | |
B : ("b" | "B") | |
C : ("c" | "C") | |
D : ("d" | "D") | |
E : ("e" | "E") | |
F : ("f" | "F") | |
G : ("g" | "G") | |
H : ("h" | "H") | |
I : ("i" | "I") | |
J : ("j" | "J") | |
K : ("k" | "K") | |
L : ("l" | "L") | |
M : ("m" | "M") | |
N : ("n" | "N") | |
O : ("o" | "O") | |
P : ("p" | "P") | |
Q : ("q" | "Q") | |
R : ("r" | "R") | |
S : ("s" | "S") | |
T : ("t" | "T") | |
U : ("u" | "U") | |
V : ("v" | "V") | |
W : ("w" | "W") | |
X : ("x" | "X") | |
Y : ("y" | "Y") | |
Z : ("z" | "Z") | |
WS : (" " | "\t" | "\u000C") | |
NEWLINE : "\r"? "\n" | |
LINE_COMMENT : "!" /(!?\n|\r)*/ | |
BOOLLITERAL : (F A L S E | T R U E) | |
CHARLITERAL : "'" (ESCAPESEQUENCE | /(!?'|\\|\r|\n)/ ) "'" | |
STRINGLITERAL : "\"" (ESCAPESEQUENCE | /(!?\\|"|\r|\n)/ )* "\"" | |
ESCAPESEQUENCE : "\\" ("b" | "t" | "n" | "f" | "r" | "\"" | "'" | "\\" | ("0" .. "3") ("0" .. "7") ("0" .. "7") | ("0" .. "7") ("0" .. "7") | ("0" .. "7")) | |
FLOATLITERAL : ("0" .. "9") + "." ("0" .. "9")* EXPONENT? | "." ("0" .. "9") + EXPONENT? | ("0" .. "9") + EXPONENT | |
EXPONENT : E ("+" | "-")? ("0" .. "9") + | |
INTLITERAL : ("0" .. "9") + | HEXPREFIX HEXDIGIT + HEXSUFFIX | BINPREFIX BINDIGIT + BINSUFFIX | |
HEXPREFIX : "'" H | |
HEXDIGIT : ("0" .. "9" | "a" .. "f" | "A" .. "F") | |
HEXSUFFIX : "'" | |
BINPREFIX : "'" B | |
BINDIGIT : ("0" | "1") | |
BINSUFFIX : "'" | |
IDENTIFIER : IDENTIFIERSTART IDENTIFIERPART* | |
IDENTIFIERSTART : "a" .. "z" | "A" .. "Z" | "_" | |
IDENTIFIERPART : (IDENTIFIERSTART | "0" .. "9") | |
%ignore WS |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment