Преглед на файлове

Fix literal range escape assertion

tags/gm/2021-09-23T00Z/github.com--lark-parser-lark/0.6.6
Kyungdahm Yun преди 5 години
родител
ревизия
d5c9006f01
променени са 2 файла, в които са добавени 13 реда и са изтрити 1 реда
  1. +1
    -1
      lark/load_grammar.py
  2. +12
    -0
      tests/test_parser.py

+ 1
- 1
lark/load_grammar.py Целия файл

@@ -389,7 +389,7 @@ class PrepareLiterals(Transformer_InPlace):
assert start.type == end.type == 'STRING'
start = start.value[1:-1]
end = end.value[1:-1]
assert len(start) == len(end) == 1, (start, end, len(start), len(end))
assert len(_fix_escaping(start)) == len(_fix_escaping(end)) == 1, (start, end, len(_fix_escaping(start)), len(_fix_escaping(end)))
regexp = '[%s-%s]' % (start, end)
return ST('pattern', [PatternRE(regexp)])



+ 12
- 0
tests/test_parser.py Целия файл

@@ -456,6 +456,18 @@ def _make_parser_test(LEXER, PARSER):
""")
g.parse('\x01\x02\xABCD')

def test_unicode_literal_range_escape(self):
g = _Lark(r"""start: A+
A: "\u0061".."\u0063"
""")
g.parse('abc')

def test_hex_literal_range_escape(self):
g = _Lark(r"""start: A+
A: "\x01".."\x03"
""")
g.parse('\x01\x02\x03')

@unittest.skipIf(PARSER == 'cyk', "Takes forever")
def test_stack_for_ebnf(self):
"""Verify that stack depth isn't an issue for EBNF grammars"""


Зареждане…
Отказ
Запис