public final void exprStmt() throws RecognitionException
    {
        
        AST ast1 = null;
        
        try {
            // CPP.g:336:3: ( expr ';' )
            // CPP.g:336:5: expr ';'
            {
                this.pushFollow(FOLLOW_expr_in_exprStmt1317);
                this.expr();
                
                this.state._fsp--;
                if (this.state.failed) {
                    return;
                }
                if (this.state.backtracking == 0) {
                    ast1 = this.out;
                    this.out = null;
                }
                this.match(this.input, 23, FOLLOW_23_in_exprStmt1325);
                if (this.state.failed) {
                    return;
                }
                if (this.state.backtracking == 0) {
                    this.out = new ExprStmtAST((ExprAST) ast1);
                }
                
            }
            
        }
        catch (RecognitionException re) {
            this.reportError(re);
            this.recover(this.input, re);
        } finally {
        }
        return;
    }
    
    // $ANTLR end "exprStmt"
    
    // $ANTLR start "ifStmt"
    // CPP.g:341:1: ifStmt : 'if' '(' expr ')' stmt ( options {k=1; }