如何在bison中优雅地处理具有多个组件的规则
how to elegantly handle rule with multiple components in bison
我使用ocaml进行编程,并使用ocalmyacc生成解析器。ocaml的一个非常有用的特征是它的变体类型:
type exp = Number of int
| Addexp of exp*exp
有了这样的类型,我可以在解析器中非常优雅地构建一个AST数据结构,以表示这样的exp:
exp :
number {Number($1)}
| exp1 + exp2 {Addexp($1,$3)}
那么,如果C++和bison中存在类似的机制呢?
是的,只需与exp + exp
比赛即可。请注意,对于给定的规则,其所有操作都必须将相同的已声明%type
分配给$$
。在你的情况下,它看起来像这样:
exp: number { $$ = PrimaryExp($1); }
| exp '+' exp { $$ = AddExp($1, $2); }
相关文章:
- 此代码是否违反一个定义规则
- 如何将 txt 文件中的行分隔为组件C++
- 生成文件不对文件使用隐式规则
- 变量可能尚未初始化[MIRA 2012规则9.1,强制性]
- 静态结构和一个定义规则
- 使用不同的CRT将新的C++代码与旧的(二进制)组件隔离开来的最佳方法是什么
- 尽管遵循了规则,内存泄漏在哪里
- 到连接组件算法的问题(递归)
- 两个 COM 组件中 ENUM 的重复条目
- 为什么 gcc 会产生这种奇怪的组件与叮当声?
- 使用 bfs 解决连接组件问题时得到错误的答案
- 这是关于成员访问规则的正确摘要吗
- uint_not_usable_without_attribute在业力规则中使用数字生成器时静态断言失败
- 如何在ECS框架中更新组件数据和通知系统
- 增强精神解析器规则以检测语句中的特殊结尾
- 如何从ECS中的模板方法获取组件?
- 制作文件:没有规则来制定目标:如何设置正确的规则?
- 使用蓝牙组件将数据从Android手机传输到串行设备时出现问题
- 组件上的虚幻引擎可蓝图UFUNCTION会导致构建错误
- 如何在bison中优雅地处理具有多个组件的规则