public Token nextToken() {

        if (currentPosition == characters.length)
            return Token.getTokenInstance("END");

        char nextChar = consume();
        StringBuilder builder = new StringBuilder();
        builder.append(nextChar);

        if (isAlpha(nextChar)) {

            while (isAlpha(nextChar = peek())) {
                nextChar = consume();
                builder.append(nextChar);
            }

        } else if (nextChar == '&' || nextChar == '|') {
            nextChar = consume();
            builder.append(nextChar);

        } else if (nextChar == '"') {
            consumeStringLiteral(builder);
        }

        return Token.getTokenInstance(builder.toString());
    }