From e6cf5708247c363d285adb42e211e44e9bb725ce Mon Sep 17 00:00:00 2001 From: Erez Shinan Date: Tue, 13 Aug 2024 19:38:52 +0200 Subject: [PATCH] Bugfix: Earley now respects ambiguity='resolve' again. Bug was introduced in a previous bugfix. --- lark/parsers/earley.py | 2 +- tests/test_parser.py | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/lark/parsers/earley.py b/lark/parsers/earley.py index 8deaa2f4..d173129a 100644 --- a/lark/parsers/earley.py +++ b/lark/parsers/earley.py @@ -306,7 +306,7 @@ def parse(self, lexer, start): transformer = ForestToParseTree(self.Tree, self.callbacks, self.forest_sum_visitor and self.forest_sum_visitor(), self.resolve_ambiguity, use_cache) solutions = [transformer.transform(s) for s in solutions] - if len(solutions) > 1: + if len(solutions) > 1 and not self.resolve_ambiguity: t: Tree = self.Tree('_ambig', solutions) t.expand_kids_by_data('_ambig') # solutions may themselves be _ambig nodes return t diff --git a/tests/test_parser.py b/tests/test_parser.py index 5a0d405d..59e9a718 100644 --- a/tests/test_parser.py +++ b/tests/test_parser.py @@ -841,6 +841,11 @@ def test_multiple_start_solutions(self): ) self.assertEqual(tree, expected) + l = Lark(grammar, ambiguity='resolve', lexer=LEXER) + tree = l.parse('x') + assert tree == Tree('start', ['x']) + + def test_cycle(self): grammar = """ start: start?