| @@ -49,11 +49,21 @@ class TreeToJson(Transformer): | |||||
| false = lambda self, _: False | false = lambda self, _: False | ||||
| ### Create the JSON parser with Lark, using the Earley algorithm | |||||
| # json_parser = Lark(json_grammar, parser='earley', lexer='standard') | # json_parser = Lark(json_grammar, parser='earley', lexer='standard') | ||||
| # def parse(x): | # def parse(x): | ||||
| # return TreeToJson().transform(json_parser.parse(x)) | # return TreeToJson().transform(json_parser.parse(x)) | ||||
| json_parser = Lark(json_grammar, parser='lalr', lexer='standard', transformer=TreeToJson()) | |||||
| ### Create the JSON parser with Lark, using the LALR algorithm | |||||
| json_parser = Lark(json_grammar, parser='lalr', | |||||
| # Using the standard lexer isn't required, and isn't usually recommended. | |||||
| # But, it's good enough for JSON, and it's slightly faster. | |||||
| lexer='standard', | |||||
| # Disabling propagate_positions and placeholders slightly improves speed | |||||
| propagate_positions=False, | |||||
| maybe_placeholders=False, | |||||
| # Using an internal transformer is faster and more memory efficient | |||||
| transformer=TreeToJson()) | |||||
| parse = json_parser.parse | parse = json_parser.parse | ||||