compiler-construction - AST 节点属性与子树
问题描述
在 AST 中,节点的属性应该是什么,节点的子树应该是什么?例如,如果一个变量声明有一个类型,那么该类型应该在子树中表示还是作为标识符节点的属性表示?
解决方案
抽象语法树遵循它正在建模的结构的语法。变量声明的语法通常由一个标识符和一个类型组成(以及一些标点符号,它们可能不会在 AST 中找到它的方式),这些将是声明节点的子节点。
通常,标识符节点的属性将是一个符号表条目的链接,它最终将以某种方式引用标识符的声明类型。但是语义分析并不是解析的一部分。在大多数情况下,它将在 AST 的后续遍历中完成。
推荐阅读
- c - 将字符串传递给外部汇编函数
- java - Java 高低猜测游戏循环错误
- mysql - Spring Data、MySQL 和不工作的独特价值
- c++ - Windows(appveyor)上的 Qt MySQL 驱动程序不支持事务功能
- javascript - JavaScript 中的异步事件处理
- haskell - Haskell中表达的“最外层”是什么意思
- ms-access - 主键/外键示例
- python - 将字符串解析为日期时间,同时在熊猫中考虑 AM/PM
- django - Base64ImageField 仅在参数 context={"request": request} 添加到它时才返回完整的 url 路径 - 还有其他方法吗
- javascript - 弹出窗口迅速消失