From e6cf5708247c363d285adb42e211e44e9bb725ce Mon Sep 17 00:00:00 2001 From: Erez Shinan Date: Tue, 13 Aug 2024 19:38:52 +0200 Subject: [PATCH 1/2] 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? From acfe33d943a1310f3ca26145eb2896bc5c4955c9 Mon Sep 17 00:00:00 2001 From: Erez Shinan Date: Tue, 13 Aug 2024 21:47:06 +0200 Subject: [PATCH 2/2] Version bump (1.2.2) --- lark/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lark/__init__.py b/lark/__init__.py index 517a8356..d22cc2d9 100644 --- a/lark/__init__.py +++ b/lark/__init__.py @@ -14,7 +14,7 @@ from .utils import logger from .visitors import Discard, Transformer, Transformer_NonRecursive, Visitor, v_args -__version__: str = "1.2.1" +__version__: str = "1.2.2" __all__ = ( "GrammarError", pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy