소스 검색

Bugfix in scanless mode

tags/gm/2021-09-23T00Z/github.com--lark-parser-lark/0.5.1
Erez Shinan 7 년 전
부모
커밋
89edd9f30f
1개의 변경된 파일4개의 추가작업 그리고 4개의 파일을 삭제
  1. +4
    -4
      lark/load_grammar.py

+ 4
- 4
lark/load_grammar.py 파일 보기

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


def interleave(l, item):
def _interleave(l, item):
for e in l:
yield e
if isinstance(e, T):
if e.data == 'literal':
if e.data in ('literal', 'range'):
yield item
elif is_terminal(e):
yield item
@@ -366,11 +366,11 @@ class Grammar:
expr = Token('RULE', '__ignore')
for r, tree, _o in rule_defs:
for exp in tree.find_data('expansion'):
exp.children = list(interleave(exp.children, expr))
exp.children = list(_interleave(exp.children, expr))
if r == start:
exp.children = [expr] + exp.children
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]
_ignore_tree = T('expr', [T('expansions', x), Token('OP', '?')])


불러오는 중...
취소
저장