如何获取令牌的bison语法规则

如何获取令牌的bison语法规则,bison,bisonc++,Bison,Bisonc++,假设我有以下规则: rule1 : TOKEN rule2 TOKEN { printf("Found TOKEN\n") ; } rule2 : ATOKEN { printf("Found ATOKEN\n") ; } 在这里,输出将如下所示: Found ATOKEN Found TOKEN 因为规则2将首先减少。有没有什么方法可以让我一拿到代币就打印一些东西 N.B我知道当它与令牌匹配时,我可以从扫描仪中执行此操作,但我需要从bison打印它。bison允许在规则内执行操作(称为)

假设我有以下规则:

rule1 : TOKEN rule2 TOKEN { printf("Found TOKEN\n") ; }

rule2 : ATOKEN { printf("Found ATOKEN\n") ; }
在这里,输出将如下所示:

Found ATOKEN
Found TOKEN
因为规则2将首先减少。有没有什么方法可以让我一拿到
代币
就打印一些东西


N.B我知道当它与令牌匹配时,我可以从扫描仪中执行此操作,但我需要从bison打印它。

bison允许在规则内执行操作(称为)

在您的示例中,它们可以这样使用:

rule1 : TOKEN { printf("Found TOKEN 1\n"); } rule2 TOKEN { printf("Found TOKEN\n") ; }

rule2 : ATOKEN { printf("Found ATOKEN\n") ; }

但是,您应该仔细阅读文档,看看这是否具有您想要的语义效果。

目前它正按照我的要求工作。稍后我将检查语义错误。谢谢你的回答。