Bläddra i källkod

Fixed tree-construction semantics: Alias now overrides the "?rule" operator

Breaking change!!
tags/gm/2021-09-23T00Z/github.com--lark-parser-lark/0.5.1
Erez Shinan 6 år sedan
förälder
incheckning
baae08e399
2 ändrade filer med 8 tillägg och 2 borttagningar
  1. +1
    -1
      lark/parse_tree_builder.py
  2. +7
    -1
      tests/test_parser.py

+ 1
- 1
lark/parse_tree_builder.py Visa fil

@@ -123,7 +123,7 @@ class ParseTreeBuilder:
raise Exception("Rule %s is marked for expansion (it starts with an underscore) and isn't allowed to have aliases (alias=%s)" % (origin, alias))

wrapper_chain = filter(None, [
expand1 and Expand1,
(expand1 and not alias) and Expand1,
create_token and Factory(TokenWrapper, create_token),
create_rule_handler(expansion, keep_all_tokens, filter_out),
self.propagate_positions and PropagatePositions,


+ 7
- 1
tests/test_parser.py Visa fil

@@ -78,7 +78,13 @@ class TestParsers(unittest.TestCase):
""")

r = g.parse('x')
self.assertEqual( r.children[0].data, "b" )
self.assertEqual( r.children[0].data, "c" )

g = Lark("""start: a
?a: B -> c
B: "x"
""")
self.assertEqual( r.children[0].data, "c" )


g = Lark("""start: a


Laddar…
Avbryt
Spara