@Override public Token getToken() throws Exception { StringBuilder s = new StringBuilder(); while ((dfa.lastState() == null) || (!dfa.lastState().equals(DFA.deadState))) { consume(); if (currentCharacter == (int) '\n') line++; if (currentCharacter == -1) return Token.EOF_TOKEN; s.append((char) currentCharacter); dfa.simulate(s.toString() + ((char) nextCharacter)); } if (dfa.lastState().equals(DFA.deadState)) { if (dfa.simulate(s.toString())) { return new Token(dfa.lastState().attached(), s.toString()); } } throw new Exception("Line : " + line + "Invalid lexeme"); }