每个Bison行动中的常见结语代码

时间:2018-04-06 09:24:11

标签: parsing bison

我需要在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在每个操作结束时添加相同的代码块?

0 个答案:

没有答案