Lexical analyzer (untested)