Lexer: character lookahead (charAt), add ability to intercept next()