python-lambda-interpreter/termdef.lark
2022-09-27 17:17:59 +02:00

19 lines
462 B
Text

start: rule+
rule: ntermdef | assocdef
ntermdef: IDENTIFIER ":=" rhs ("|" rhs)*
rhs: token+ ("@" annotation+)?
token: STRING | IDENTIFIER
annotation: IDENTIFIER "=" value
assocdef: "assoc" STRING lr
lr: LEFT | RIGHT
LEFT: "left"
RIGHT: "right"
WORD: ("a".."z" | "0".."9")+
value: STRING | SIGNED_NUMBER | "True" | "False"
%import common.WS
%import common.SIGNED_NUMBER
%ignore WS
%import common.ESCAPED_STRING -> STRING
%import common.CNAME -> IDENTIFIER