From 732a562a1cf7bba5216b0ae61ce00b1b4f46d10a Mon Sep 17 00:00:00 2001 From: Aleh Arol Date: Sun, 31 May 2020 00:01:19 +0300 Subject: [PATCH] Use token type equality as a fallback when matching error examples --- lark/exceptions.py | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/lark/exceptions.py b/lark/exceptions.py index cf03746..4cbe4bf 100644 --- a/lark/exceptions.py +++ b/lark/exceptions.py @@ -39,7 +39,7 @@ class UnexpectedInput(LarkError): """ assert self.state is not None, "Not supported for this exception" - candidate = None + candidate = (None, False) for label, example in examples.items(): assert not isinstance(example, STRING_TYPE) @@ -51,12 +51,16 @@ class UnexpectedInput(LarkError): try: if ut.token == self.token: # Try exact match first return label + + if (ut.token.type == self.token.type) and not candidate[-1]: # Fallback to token types match + candidate = label, True + except AttributeError: pass - if not candidate: - candidate = label + if not candidate[0]: + candidate = label, False - return candidate + return candidate[0] class UnexpectedCharacters(LexError, UnexpectedInput):