lark
lark copied to clipboard
Standalone parser is not deterministic
Describe the bug
I want to keep a standalone parser in my repo, to make it easy to use without any dependencies. But even rebuilding exactly the same grammar produces a different parse table, which makes git diff unhappy. I presume this is because set() is unordered.
To Reproduce
The simplest possible grammar: an empty start rule, start:. Then compile it twice and compare the output, diff =(python -m lark.tools.standalone a.g) =(python -m lark.tools.standalone a.g).
3157c3157
< ... 'parser': {'tokens': {0: 'start', 1: '$END'}, 'states': {0: {}, 1: {0: (0, 0), 1: (1, {'@': 0})}}, 'start_states': {'start': 1}, 'end_states': {'start': 0}}, ...
---
> ... 'parser': {'tokens': {0: 'start', 1: '$END'}, 'states': {0: {0: (0, 1), 1: (1, {'@': 0})}, 1: {}}, 'start_states': {'start': 0}, 'end_states': {'start': 1}}, ...
(I cut off some irrelevant parts)
Duplicate of https://github.com/lark-parser/lark/issues/1194
what u doin here