token = null
end
add("\tredef fun is_accept do return true\n")
- add("\tredef fun make_token(position, text) do\n")
+ var is_ignored = false
if token != null and token.name == "Ignored" then
+ is_ignored = true
+ add("\tredef fun is_ignored do return true\n")
+ end
+ add("\tredef fun make_token(position, text) do\n")
+ if is_ignored then
add("\t\treturn null\n")
else
if token == null then
res.add token
break
end
- var position = new Position(pos_start, pos_end, line_start, line_end, col_start, col_end)
- var token = last_state.make_token(position, text.substring(pos_start, pos_end-pos_start+1))
- if token != null then res.add(token)
+ if not last_state.is_ignored then
+ var position = new Position(pos_start, pos_end, line_start, line_end, col_start, col_end)
+ var token = last_state.make_token(position, text.substring(pos_start, pos_end-pos_start+1))
+ if token != null then res.add(token)
+ end
end
if pos >= length then
var token = new NEof
fun is_accept: Bool do return false
fun trans(c: Char): nullable DFAState do return null
fun make_token(position: Position, text: String): nullable NToken is abstract
+ fun is_ignored: Bool do return false
end
###