如何获得令牌的野牛语法规则
How to get bison grammar rule for tokens
假设我有以下规则:
rule1 : TOKEN rule2 TOKEN { printf("Found TOKEN\n") ; }
rule2 : ATOKEN { printf("Found ATOKEN\n") ; }
此处,输出如下:
Found ATOKEN
Found TOKEN
因为rule2
会先减少。有什么方法可以让我在收到 TOKEN
后立即打印一些东西吗?
N.B 我知道当它与令牌匹配时我可以从扫描仪做到这一点,但我需要从野牛打印它。
Bison 允许在规则内执行操作(称为 mid-rule actions)。
在您的示例中,它们可以这样使用:
rule1 : TOKEN { printf("Found TOKEN 1\n"); } rule2 TOKEN { printf("Found TOKEN\n") ; }
rule2 : ATOKEN { printf("Found ATOKEN\n") ; }
但您应该仔细阅读文档,看看这是否具有您想要的语义效果。
假设我有以下规则:
rule1 : TOKEN rule2 TOKEN { printf("Found TOKEN\n") ; }
rule2 : ATOKEN { printf("Found ATOKEN\n") ; }
此处,输出如下:
Found ATOKEN
Found TOKEN
因为rule2
会先减少。有什么方法可以让我在收到 TOKEN
后立即打印一些东西吗?
N.B 我知道当它与令牌匹配时我可以从扫描仪做到这一点,但我需要从野牛打印它。
Bison 允许在规则内执行操作(称为 mid-rule actions)。
在您的示例中,它们可以这样使用:
rule1 : TOKEN { printf("Found TOKEN 1\n"); } rule2 TOKEN { printf("Found TOKEN\n") ; }
rule2 : ATOKEN { printf("Found ATOKEN\n") ; }
但您应该仔细阅读文档,看看这是否具有您想要的语义效果。