用于匹配一组标记的 Bison 语法规则
Bison grammar rule to match a group of tokens
有没有办法一次匹配多个令牌?现在我的规则之一如下所示:
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
| ...;
有没有办法一次匹配多个令牌?现在我的规则之一如下所示:
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
| ...;