muMLE/concrete_syntax/textual_cd/parser.py

26 lines
428 B
Python

grammar = r"""
%import common.WS
%ignore WS
%ignore COMMENT
?start: object*
IDENTIFIER: /[A-Za-z_][A-Za-z_0-9]*/
COMMENT: /#[^\n]*\n/
# newline
_NL: /(\r?\n[\t ]*)+/
literal: INT
| STR
| BOOL
INT: /[0-9]+/
STR: /"[^"]*"/
| /'[^']*'/
BOOL: "True" | "False"
object: [IDENTIFIER] ":" IDENTIFIER [link] _NL [_INDENT slot+ _DEDENT]
link: "(" IDENTIFIER "->" IDENTIFIER ")"
slot: IDENTIFIER "=" literal _NL
"""