从 Yacc 在 Lex 中启动一个状态
在 Lex 中,我可以使用关键字 BEGIN STATE1 开始一个新状态。我想在规则之间从 yacc 做同样的事情。在规则的操作部分,如果我添加 BEGIN STATE1 ,它会显示 BEGIN 未声明的错误。我有什么办法可以做到这一点吗?
In Lex i can start a new state using the keyword BEGIN STATE1. I want to do the same from yacc in between rules . In the action section of a rule , if i add BEGIN STATE1 , it says BEGIN undeclared error. Is there any way i can do this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
伊势紫藤为我找到了答案。
在 lex 中创建使用 BEGIN 宏的单独函数。称它们为野牛。
注意:对于像我这样的初学者,不要忘记在 .y 文件的开头添加这些函数的声明,否则您将在链接过程中收到未声明的错误。
Ise Wisteria found the answer for me.
Create separate functions in lex that use the BEGIN macro . Call them in bison .
Note:For those very beginners like me , do not forget to add a declaration of these functions at the beginning of the .y file or you will get an undeclared error during linking.