Browse Source

Adjustments

tags/gm/2021-09-23T00Z/github.com--lark-parser-lark/0.6.6
Erez Shinan 5 years ago
parent
commit
1798971455
4 changed files with 8 additions and 6 deletions
  1. +1
    -1
      lark/parsers/earley.py
  2. +1
    -1
      lark/parsers/xearley.py
  3. +1
    -1
      lark/reconstruct.py
  4. +5
    -3
      tests/test_parser.py

+ 1
- 1
lark/parsers/earley.py View File

@@ -38,7 +38,7 @@ class Parser:
self.NON_TERMINALS = { sym for r in parser_conf.rules for sym in r.expansion if not sym.is_term }

for rule in parser_conf.rules:
self.callbacks[rule] = getattr(parser_conf.callback, rule.alias or rule.origin, None)
self.callbacks[rule] = rule.alias if callable(rule.alias) else getattr(parser_conf.callback, rule.alias)
self.predictions[rule.origin] = [x.rule for x in analysis.expand_rule(rule.origin)]

self.term_matcher = term_matcher


+ 1
- 1
lark/parsers/xearley.py View File

@@ -64,7 +64,7 @@ class Parser:
token_cache = {}

text_line = 1
text_column = 0
text_column = 1

def make_symbol_node(s, start, end):
label = (s, start.i, end.i)


+ 1
- 1
lark/reconstruct.py View File

@@ -4,7 +4,7 @@ from .tree import Tree
from .visitors import Transformer_InPlace
from .common import ParserConf
from .lexer import Token, PatternStr
from .parsers import earley, resolve_ambig
from .parsers import earley
from .grammar import Rule, Terminal, NonTerminal




+ 5
- 3
tests/test_parser.py View File

@@ -240,7 +240,7 @@ def _make_full_earley_test(LEXER):
parser = Lark(grammar, parser='earley', lexer=LEXER, ambiguity='explicit')
root_symbol = parser.parse('ab')
ambig_tree = ForestToAmbiguousTreeVisitor(root_symbol, parser.parser.parser.callbacks).go()
print(ambig_tree.pretty())
# print(ambig_tree.pretty())
self.assertEqual( ambig_tree.data, '_ambig')
self.assertEqual( len(ambig_tree.children), 2)

@@ -256,7 +256,7 @@ def _make_full_earley_test(LEXER):
l = Lark(grammar, parser='earley', ambiguity='explicit', lexer=LEXER)
root_symbol = l.parse('cde')
ambig_tree = ForestToAmbiguousTreeVisitor(root_symbol, l.parser.parser.callbacks).go()
print(ambig_tree.pretty())
# print(ambig_tree.pretty())
# tree = ApplyCallbacks(l.parser.parser.postprocess).transform(ambig_tree)

assert ambig_tree.data == '_ambig', ambig_tree
@@ -321,7 +321,9 @@ def _make_full_earley_test(LEXER):
# print res.pretty()
# print expected.pretty()

self.assertEqual(tree, expected)
# self.assertEqual(tree, expected)
self.assertEqual(tree.data, expected.data)
self.assertEqual(set(tree.children), set(expected.children))


@unittest.skipIf(LEXER=='dynamic', "Only relevant for the dynamic_complete parser")


Loading…
Cancel
Save