有没有办法一次匹配多个令牌?现在,我的规则之一如下所示:

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/

10-13 08:15