diff --git a/examples/conf_nolex.py b/examples/conf_nolex.py index 02a82a6..6c16baf 100644 --- a/examples/conf_nolex.py +++ b/examples/conf_nolex.py @@ -36,7 +36,7 @@ this="that",4 """ r = parser.parse(sample_conf) - print r.pretty() + print (r.pretty()) if __name__ == '__main__': test() diff --git a/lark/reconstruct.py b/lark/reconstruct.py index a9b45e1..5ac68ad 100644 --- a/lark/reconstruct.py +++ b/lark/reconstruct.py @@ -68,7 +68,7 @@ class Reconstructor: return to_write d = defaultdict(list) - for name, expansions in parser.rules.items(): + for name, (expansions, options) in parser.rules.items(): for expansion, alias in expansions: if alias: d[alias].append(expansion) @@ -77,8 +77,8 @@ class Reconstructor: d[name].append(expansion) rules = [] - expand1s = {name.lstrip('!').lstrip('?') for name in d - if name.startswith(('?', '!?'))} # XXX Ugly code + expand1s = {name for name, (_x, options) in parser.rules.items() + if options and options.expand1} for name, expansions in d.items(): for expansion in expansions: @@ -86,8 +86,6 @@ class Reconstructor: (MatchTerminal(sym) if is_terminal(sym) else MatchTree(sym),) for sym in expansion if not is_discarded_terminal(sym)] - name = name.lstrip('!').lstrip('?') - rules.append((name, reduced, WriteTokens(name, expansion).f)) self.rules = rules