Pārlūkot izejas kodu

Bugfix in scanless mode

tags/gm/2021-09-23T00Z/github.com--lark-parser-lark/0.5.1
Erez Shinan pirms 7 gadiem
vecāks
revīzija
89edd9f30f
1 mainītis faili ar 4 papildinājumiem un 4 dzēšanām
  1. +4
    -4
      lark/load_grammar.py

+ 4
- 4
lark/load_grammar.py Parādīt failu

@@ -339,11 +339,11 @@ class TokenTreeToPattern(Transformer):
return PatternRE('(?:%s)%s' % (inner.to_regexp(), op), inner.flags) return PatternRE('(?:%s)%s' % (inner.to_regexp(), op), inner.flags)




def interleave(l, item):
def _interleave(l, item):
for e in l: for e in l:
yield e yield e
if isinstance(e, T): if isinstance(e, T):
if e.data == 'literal':
if e.data in ('literal', 'range'):
yield item yield item
elif is_terminal(e): elif is_terminal(e):
yield item yield item
@@ -366,11 +366,11 @@ class Grammar:
expr = Token('RULE', '__ignore') expr = Token('RULE', '__ignore')
for r, tree, _o in rule_defs: for r, tree, _o in rule_defs:
for exp in tree.find_data('expansion'): for exp in tree.find_data('expansion'):
exp.children = list(interleave(exp.children, expr))
exp.children = list(_interleave(exp.children, expr))
if r == start: if r == start:
exp.children = [expr] + exp.children exp.children = [expr] + exp.children
for exp in tree.find_data('expr'): for exp in tree.find_data('expr'):
exp.children[0] = T('expansion', list(interleave(exp.children[:1], expr)))
exp.children[0] = T('expansion', list(_interleave(exp.children[:1], expr)))


x = [T('expansion', [Token('RULE', x)]) for x in ignore_names] x = [T('expansion', [Token('RULE', x)]) for x in ignore_names]
_ignore_tree = T('expr', [T('expansions', x), Token('OP', '?')]) _ignore_tree = T('expr', [T('expansions', x), Token('OP', '?')])


Notiek ielāde…
Atcelt
Saglabāt