(new ComputeProdLocationVisitor).enter_visit(node)
return node
else if action_type == 3 then # ERROR
+ # skip injected tokens
+ while token._location == null do token = lexer.next
var node2 = new AParserError.init_parser_error("Syntax error: unexpected {token}.", token.location, token)
var node = new Start(null, node2)
return node
redef fun visit(n: ANode)
do
if n isa Token then
- var loc = n.location
+ var loc = n._location
+ if loc == null then return
_last_location = loc
# Add a first token to productions that need one