lexical analyzer