From a207963e46a0d71a34980ccf85841e78b3d37c95 Mon Sep 17 00:00:00 2001 From: Erez Sh Date: Sat, 28 Sep 2019 23:38:02 +0300 Subject: [PATCH] Improved error reporting (Issue #194) --- lark/lexer.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/lark/lexer.py b/lark/lexer.py index 9ea224e..26213ed 100644 --- a/lark/lexer.py +++ b/lark/lexer.py @@ -168,7 +168,9 @@ class _Lex: lexer = self.lexer res = lexer.match(stream, line_ctr.char_pos) if not res: - allowed = {v for m, tfi in lexer.mres for v in tfi.values()} + allowed = {v for m, tfi in lexer.mres for v in tfi.values()} - ignore_types + if not allowed: + allowed = {""} raise UnexpectedCharacters(stream, line_ctr.char_pos, line_ctr.line, line_ctr.column, allowed=allowed, state=self.state, token_history=last_token and [last_token]) value, type_ = res @@ -382,7 +384,6 @@ class ContextualLexer(Lexer): value, type_ = root_match t = Token(type_, value, e.pos_in_stream, e.line, e.column) - expected = {v for m, tfi in l.lexer.mres for v in tfi.values()} - raise UnexpectedToken(t, expected) + raise UnexpectedToken(t, e.allowed) ###}