假设我有以下规则:
rule1 : TOKEN rule2 TOKEN { printf("Found TOKEN\n") ; }
rule2 : ATOKEN { printf("Found ATOKEN\n") ; }
在这里,输出将如下所示:
Found ATOKEN
Found TOKEN
因为rule2
会先减少。有什么办法可以在我收到后立即打印出来TOKEN
吗?
注意,我知道当它与 TOKEN 匹配时,我可以从扫描仪执行此操作,但是我需要从 bison 打印它。
Bison 允许操作在规则内(称为中间规则操作)。
在您的示例中,它们可以这样使用:
rule1 : TOKEN { printf("Found TOKEN 1\n"); } rule2 TOKEN { printf("Found TOKEN\n") ; }
rule2 : ATOKEN { printf("Found ATOKEN\n") ; }
但是您应该仔细阅读文档,看看这是否具有您想要的语义效果。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句