我需要在Bison语法规则的每个操作结束时执行完全相同的代码块。目前,要实现这一点,我需要在每个结束大括号之前手动编写ACTION_EPILOGUE
。行动的数量是巨大的,我可能很容易忘记将其添加到某个地方。
...
%start start
%%
...
start: keyword options
;
keyword: KEYWORD {
handle_keyword($1);
ACTION_EPILOGUE;
};
options: /* empty */
| option {ACTION_EPILOGUE;}
| options ',' option {ACTION_EPILOGUE;}
;
option: edit_option {ACTION_EPILOGUE;}
| delete_option {ACTION_EPILOGUE;}
;
edit_option: EDIT {
process_edit($1);
ACTION_EPILOGUE;
};
// more rules and actions
...
是否有选项/方法指示Bison在每个操作结束时添加相同的代码块?