浏览代码

Bugfix for Scanless Earley. Thanks Ken!

tags/gm/2021-09-23T00Z/github.com--lark-parser-lark/0.5.1
Erez Shinan 7 年前
父节点
当前提交
5946e78ed2
共有 2 个文件被更改,包括 9 次插入1 次删除
  1. +1
    -1
      lark/load_grammar.py
  2. +8
    -0
      tests/test_parser.py

+ 1
- 1
lark/load_grammar.py 查看文件

@@ -313,7 +313,7 @@ class PrepareLiterals(InlineTransformer):
class SplitLiterals(InlineTransformer):
def pattern(self, p):
if isinstance(p, PatternStr) and len(p.value)>1:
return T('expansion', [T('pattern', [PatternStr(ch)]) for ch in p.value])
return T('expansion', [T('pattern', [PatternStr(ch, flags=p.flags)]) for ch in p.value])
return T('pattern', [p])

class TokenTreeToPattern(Transformer):


+ 8
- 0
tests/test_parser.py 查看文件

@@ -568,6 +568,14 @@ def _make_parser_test(LEXER, PARSER):
tree = l.parse('AB,a')
self.assertEqual(tree.children, ['AB'])

def test_token_flags3(self):
l = _Lark("""!start: ABC+
ABC: "abc"i
"""
)
tree = l.parse('aBcAbC')
self.assertEqual(tree.children, ['aBc', 'AbC'])

def test_token_flags2(self):
g = """!start: ("a"i | /a/ /b/?)+
"""


正在加载...
取消
保存