finished lexical analyzer