Browse Source

Slightly better error message (UnexpectedToken)

tags/gm/2021-09-23T00Z/github.com--lark-parser-lark/0.6.5
Erez Shinan 6 years ago
parent
commit
bd7e331ad7
2 changed files with 3 additions and 3 deletions
  1. +2
    -2
      lark/exceptions.py
  2. +1
    -1
      lark/parsers/lalr_parser.py

+ 2
- 2
lark/exceptions.py View File

@@ -81,8 +81,8 @@ class UnexpectedToken(ParseError, UnexpectedInput):
self.pos_in_stream = getattr(token, 'pos_in_stream', None) self.pos_in_stream = getattr(token, 'pos_in_stream', None)


message = ("Unexpected token %r at line %s, column %s.\n" 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) super(UnexpectedToken, self).__init__(message)




+ 1
- 1
lark/parsers/lalr_parser.py View File

@@ -45,7 +45,7 @@ class _Parser:
try: try:
return states[state][key] return states[state][key]
except KeyError: 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 raise UnexpectedToken(token, expected, state=state) # TODO filter out rules from expected


def reduce(rule): def reduce(rule):


Loading…
Cancel
Save