假设我每次匹配规则时都需要运行一些初始化代码,我怎样才能减少冗余?
rule : TOKEN1 { init(); token1Code(); }
| TOKEN2 { init(); token2Code(); }
;
也可以做类似的事情
rule : TOKEN1
| TOKEN2
{ codeForToken1OrToken2(); }
;
最佳答案
你可以使用类似的东西:
rule : { init(); } real_rule { codeForToken1or2(); } ;
real_rule : TOKEN1 { token1Code(); }
| TOKEN2 { token2Code(); }
;
但这可能会引入冲突,具体取决于“规则”的使用方式。
关于c++ - 是否可以堆叠Yacc文法规则代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1767670/