public final void pp_token() throws RecognitionException
    {
        Token id = null;
        
        try {
            // CPP.g:72:3: (id= IDENTIFIER | literal )
            int alt3 = 2;
            int LA3_0 = this.input.LA(1);
            
            if ((LA3_0 == IDENTIFIER)) {
                alt3 = 1;
            }
            else if ((((LA3_0 >= CHARACTER_LITERAL) && (LA3_0 <= FLOATING_POINT_LITERAL)))) {
                alt3 = 2;
            }
            else {
                if (this.state.backtracking > 0) {
                    this.state.failed = true;
                    return;
                }
                NoViableAltException nvae = new NoViableAltException("", 3, 0, this.input);
                
                throw nvae;
            }
            switch (alt3)
            {
                case 1:
                    // CPP.g:72:5: id= IDENTIFIER
                {
                    id = (Token) this.match(this.input, IDENTIFIER, FOLLOW_IDENTIFIER_in_pp_token175);
                    if (this.state.failed) {
                        return;
                    }
                    if (this.state.backtracking == 0) {
                        this.out = new VarExprAST(id);
                    }
                    
                }
                    break;
                case 2:
                    // CPP.g:73:5: literal
                {
                    this.pushFollow(FOLLOW_literal_in_pp_token183);
                    this.literal();
                    
                    this.state._fsp--;
                    if (this.state.failed) {
                        return;
                    }
                    
                }
                    break;
                
            }
        }
        catch (RecognitionException re) {
            this.reportError(re);
            this.recover(this.input, re);
        } finally {
        }
        return;
    }