Bläddra i källkod

Added the fruitflies test. Found bug in scanless reconstruction of tokens

tags/gm/2021-09-23T00Z/github.com--lark-parser-lark/0.5.1
Erez Shinan 6 år sedan
förälder
incheckning
692307f683
1 ändrade filer med 44 tillägg och 1 borttagningar
  1. +44
    -1
      tests/test_parser.py

+ 44
- 1
tests/test_parser.py Visa fil

@@ -253,6 +253,48 @@ def _make_full_earley_test(LEXER):
assert x.data == '_ambig', x
assert len(x.children) == 2

def test_fruitflies_ambig(self):
grammar = """
start: noun verb noun -> simple
| noun verb "like" noun -> comparative

noun: adj? NOUN
verb: VERB
adj: ADJ

NOUN: "flies" | "bananas" | "fruit"
VERB: "like" | "flies"
ADJ: "fruit"

%import common.WS
%ignore WS
"""
parser = Lark(grammar, ambiguity='explicit', lexer=LEXER)
res = parser.parse('fruit flies like bananas')

expected = Tree('_ambig', [
Tree('comparative', [
Tree('noun', ['fruit']),
Tree('verb', ['flies']),
Tree('noun', ['bananas'])
]),
Tree('simple', [
Tree('noun', [Tree('adj', ['fruit']), 'flies']),
Tree('verb', ['like']),
Tree('noun', ['bananas'])
])
])

# print res.pretty()
# print expected.pretty()

self.assertEqual(res, expected)






# @unittest.skipIf(LEXER=='dynamic', "Not implemented in Dynamic Earley yet") # TODO
# def test_not_all_derivations(self):
# grammar = """
@@ -825,6 +867,7 @@ def _make_parser_test(LEXER, PARSER):
self.assertEqual(res.children[0].data, 'a')



@unittest.skipIf(PARSER != 'earley', "Currently only Earley supports priority in rules")
def test_earley_prioritization_sum(self):
"Tests effect of priority on result"
@@ -838,7 +881,7 @@ def _make_parser_test(LEXER, PARSER):
bb_.1: "bb"
"""

l = Lark(grammar, parser='earley', ambiguity='resolve__antiscore_sum')
l = _Lark(grammar, ambiguity='resolve__antiscore_sum')
res = l.parse('abba')
self.assertEqual(''.join(child.data for child in res.children), 'ab_b_a_')



Laddar…
Avbryt
Spara