lexical analysis in java