19 lines
462 B
Text
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
|