假设我有以下规则:
rule1 : TOKEN rule2 TOKEN { printf("Found TOKEN\n") ; }
rule2 : ATOKEN { printf("Found ATOKEN\n") ; }
在这里,输出如下:
Found ATOKEN
Found TOKEN
因为rule2
将首先减少。收到TOKEN
后,我有什么办法可以打印一些东西?
NB 我知道当它与令牌匹配时,我可以从扫描仪中执行此操作,但是我需要从野牛中打印出来。
答案 0 :(得分:1)
野牛允许动作在规则之内(称为mid-rule actions)。
在您的示例中,它们可以像这样使用:
rule1 : TOKEN { printf("Found TOKEN 1\n"); } rule2 TOKEN { printf("Found TOKEN\n") ; }
rule2 : ATOKEN { printf("Found ATOKEN\n") ; }
但是您应该仔细阅读文档,看看它是否具有您想要的语义效果。