26 lines
428 B
Python
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
|
|
"""
|