Просмотр исходного кода

Fix due to CR - handle UnexpectedCharacters resume in the error loop

tags/gm/2021-09-23T00Z/github.com--lark-parser-lark/0.11.0
Erez Sh 3 лет назад
Родитель
Сommit
f20d72d9f6
2 измененных файлов: 10 добавлений и 4 удалений
  1. +10
    -0
      lark/lark.py
  2. +0
    -4
      lark/parsers/lalr_parser.py

+ 10
- 0
lark/lark.py Просмотреть файл

@@ -468,8 +468,18 @@ class Lark(Serialize):
raise

while True:
if isinstance(e, UnexpectedCharacters):
s = e.puppet.lexer_state.state
p = s.line_ctr.char_pos

if not on_error(e):
raise e

if isinstance(e, UnexpectedCharacters):
# If user didn't change the character position, then we should
if p == s.line_ctr.char_pos:
s.line_ctr.feed(s.text[p:p+1])

try:
return e.puppet.resume_parse()
except UnexpectedToken as e2:


+ 0
- 4
lark/parsers/lalr_parser.py Просмотреть файл

@@ -134,10 +134,6 @@ class _Parser:
e.puppet = ParserPuppet(self, state, state.lexer)
except NameError:
pass
if isinstance(e, UnexpectedCharacters):
s = state.lexer.state
p = s.line_ctr.char_pos
s.line_ctr.feed(s.text[p:p+1])
raise e
except Exception as e:
if self.debug:


Загрузка…
Отмена
Сохранить