t = get_token
while t == null do t = get_token
- var l = last_token
- if l != null then
- l.next_token = t
- t.prev_token = l
+ if t._location != null then
+ var l = last_token
+ if l != null then
+ l.next_token = t
+ t.prev_token = l
+ else
+ _file.first_token = t
+ end
+ last_token = t
end
- last_token = t
_token = t
return t
end
if sp > start_stream_pos then
var text = string.substring(start_stream_pos, sp-start_stream_pos)
var token = new ALexerError.init_lexer_error("Syntax error: unknown token {text}.", location, text)
+ _file.last_token = token
return token
else
var token = new EOF.init_tk(location)
+ _file.last_token = token
return token
end
end