有没有办法一次匹配多个令牌?现在,我的规则之一如下所示:
rule:
T_A { $$ = some_common_behavior(); }
| T_B { $$ = some_common_behavior(); }
| T_C { $$ = some_common_behavior(); }
... // many more tokens
但是,如果一组令牌可以一次匹配,它将更具可维护性:
rule:
T_A | T_B | T_C | ... { $$ = some_common_behavior(); }
PS:
some_common_behavior
调用已经可以处理当前令牌,因此不需要像第一个示例中那样为每个令牌重复代码。我只需要一个更好的方法来声明这一点,而无需所有重复。 最佳答案
您不能只是将T_*
分组为一个表达式,然后在您的rule
中使用该表达式吗?
rule:
Ts { $$ = some_common_behaviour(); }
;
Ts:
T_A
| T_B
| T_C
| ...;
关于c - 匹配一组标记的Bison语法规则,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28314275/