private CompilerToken makeToken(final String token, final String state) throws LexicalException {
        if (state.equalsIgnoreCase("identifier")) {
            return processIdentifier(token);
            
        } else if (state.equalsIgnoreCase("integer")) {
            return processInteger(token);
            
        } else if (state.equalsIgnoreCase("realexponent")) {
            return processFloat(token, state);
            
        } else if (state.equalsIgnoreCase("real")) {
            return processFloat(token, state);
            
        } else if (state.equalsIgnoreCase("realexponentzero")) {
            return processFloat(token, state);
            
        } else if (state.equalsIgnoreCase("zerointeger")) {
            return processInteger(token);
            
        } else if (state.equalsIgnoreCase("bang")) {
            throw new LexicalException("Invalid modifier ! found.");
            
        } else {
            return new CompilerToken(tokenStateMap.get(state), token);
        }
    }