C语言 野牛语法规则,用于匹配一组标记



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

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
  | ...;

最新更新