diff --git a/lark/exceptions.py b/lark/exceptions.py index ceb71b0..f3642ac 100644 --- a/lark/exceptions.py +++ b/lark/exceptions.py @@ -81,8 +81,8 @@ class UnexpectedToken(ParseError, UnexpectedInput): self.pos_in_stream = getattr(token, 'pos_in_stream', None) message = ("Unexpected token %r at line %s, column %s.\n" - "Expected: %s\n" - % (token, self.line, self.column, ', '.join(self.expected))) + "Expected one of: \n\t* %s\n" + % (token, self.line, self.column, '\n\t* '.join(self.expected))) super(UnexpectedToken, self).__init__(message) diff --git a/lark/parsers/lalr_parser.py b/lark/parsers/lalr_parser.py index 9b8ff10..09b264b 100644 --- a/lark/parsers/lalr_parser.py +++ b/lark/parsers/lalr_parser.py @@ -45,7 +45,7 @@ class _Parser: try: return states[state][key] except KeyError: - expected = states[state].keys() + expected = [s for s in states[state].keys() if s.isupper()] raise UnexpectedToken(token, expected, state=state) # TODO filter out rules from expected def reduce(rule):