parsing - yylval 可能是结构而不是联合?
问题描述
在 Bison 上, yylval 可能是 struct 而不是 union ?我知道我可以将 yylval 定义为 union with%union{}
但是有没有办法将 yylval 定义为 struct ?例如,返回标识符的行和字符串,并在对野牛的某些语法规则的操作上访问这些信息。
解决方案
是的,你可以#define YYSTYPE
成为任何你想要的类型,而不是使用%union
. 但是,这样做很少有用1 - 如果您想要源位置信息,最好%position
结合使用%union
.
在%union
声明中使用结构也是可能的(也是常见的) 。这使得某些规则很容易(有效地)返回多个值。
1主要问题是,如果您使用%type
指定使用一个结构字段,那么在同一操作中使用其他字段会很痛苦。您需要手动完成所有操作,从而失去了野牛联合类型检查的好处
推荐阅读
- python - 覆盖图像文件/文件夹的前缀
- asp.net - 来自受保护的 WebAPI 的响应是登录到我的帐户 Microsoft 页面的 HTML
- java - 使用 Spring 框架的 WebSocketClient 时如何修复 NoClassDefFoundError
- python - Python中的拼字游戏单词查找器
- dynamics-crm - 通过合作伙伴门户在 Dynamics CRM 365 中创造机会
- pandas - 如何使用我的日期时间进行预测(随机森林模型)
- amazon-cloudformation - Amplify 不知从何处获取了一个 appClientId,现在无法更新堆栈
- regex - 恰好匹配一个正则表达式项
- c - 在 C 中不使用 malloc 将局部变量保存在堆上(使用 sbrk 或 brk)
- styled-components - 样式化的组件和范围