Token () { if (myTokenQueue.size() > 0) { return myTokenQueue.removeFirst(); } final Token t = myLexer.getNextToken(); if (t.specialToken != null) { myTokenQueue.addFirst(t); for (Token s = t.specialToken; s != null; s = s.specialToken) { myTokenQueue.addFirst(s); } return myTokenQueue.removeFirst(); } else { return t; } }