|
|
@@ -0,0 +1,26 @@ |
|
|
|
# |
|
|
|
# This example shows how to use Lark's templates to achieve cleaner grammars |
|
|
|
# |
|
|
|
|
|
|
|
from lark import Lark |
|
|
|
|
|
|
|
grammar = r""" |
|
|
|
start: list | dict |
|
|
|
|
|
|
|
list: "[" _seperated{atom, ","} "]" |
|
|
|
dict: "{" _seperated{key_value, ","} "}" |
|
|
|
key_value: atom ":" atom |
|
|
|
|
|
|
|
_seperated{x, sep}: x (sep x)* // Define a sequence of 'x sep x sep x ...' |
|
|
|
|
|
|
|
atom: NUMBER | ESCAPED_STRING |
|
|
|
|
|
|
|
%import common (NUMBER, ESCAPED_STRING, WS) |
|
|
|
%ignore WS |
|
|
|
""" |
|
|
|
|
|
|
|
|
|
|
|
parser = Lark(grammar) |
|
|
|
|
|
|
|
print(parser.parse('[1, "a", 2]')) |
|
|
|
print(parser.parse('{"a": 2, "b": 6}')) |