# # 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}'))