yacc: 以后如何"save"代码执行?

yacc: how to "save" code for execution in future?

我对如何"save" yacc 解析的语法规则成为抽象语法树有误解。这是我的 yacc 文件的一部分:

expression:
              expr2                     { $$ = ; }
            | expr2 EQ expr2            { $$ = ( == ); }
            | expr2 NE expr2            { $$ = ( != ); }
            | expr2 LT expr2            { $$ = ( < ); }
            | expr2 LE expr2            { $$ = ( <= ); }
            | expr2 GT expr2            { $$ = ( > ); }
            | expr2 GE expr2            { $$ = ( >= ); }
            ;

expr2:
              expr3                     { $$ == ; }
            | expr2 PLUS expr3          { $$ =  + ; }
            | expr2 MINUS expr3         { $$ =  - ; }
            ;

expr3:
              expr4                     { $$ = ; }
            | expr3 MULT expr4          { $$ =  * ; }
            | expr3 DIVIDE expr4        { $$ =  / ; }
            ;

如您所见,所有操作都是即时执行的。我想做这样的事情:

expr2 PLUS expr3          { $$ = save_code_for_addition(, ); }

将此动作存储为抽象语法树的一个节点。

谁能解释一下这样一条预存指令的内部表示是什么,我以后到底如何通过 execute(Statement s) 执行它,什么是 Statement 数据类型?如何构建它?我真的很感激任何帮助,谢谢。

我找到了完全回答这个问题的手册: http://web.eecs.utk.edu/~bvz/teaching/cs461Sp11/notes/parse_tree/