compiler-construction - 词法分析器将标记的哪些属性填充到符号表中的值
问题描述
由于令牌可能具有不同的属性,例如名称,类型,大小等。我对哪些由词法分析器填充,哪些由编译器的其他阶段填充感到困惑。由于不同的编译器可能表现不同,我们可能会采用 gcc c编译器作为参考。
解决方案
有点主观,因为它取决于您正在构建的内容(编译器、解释器等)。此外,相当笼统的描述:
词法分析或扫描将获取您的源代码并将其分解为“令牌”或“词素”,但它们可能尚未放入符号表中。
如果您实施,评估是您可以开始删除标识符的一个点(例如,标记为关键字等)。并且通常是令牌有资格进入符号表的第一个点。根据符号,该点的符号属性可能是完整的。
后面的阶段,如解析,可能会引用符号并注入额外的信息,如范围、内部或外部引用、可见性、类型和大小等。
代码生成将最终确定符号的任何属性,此时您正在编写二进制文件。
推荐阅读
- docker - Docker - Kibana、APM、Elasticsearch 问题 -
- c++ - 我收到错误“矩阵”类型的无效操作数
*' 和 'int' 到二进制 'operator*' - java - 如何在java中提取双引号之间的字符串?
- c# - 如何从第三种形式将表单打开到面板中?
- c# - 为什么我的模型属性在尝试 POST 时为空?
- python - 尝试检测人脸时网络摄像头窗口总是崩溃
- python - Django gettext 和 gettext_lazy 都以相同的名称导入
- android - 三星设备上的位图存储已像素化,无法在文件夹中找到。仅在设备重启后修复
- java - 我的通用方法不适用于参数
- sql - 如何在 Apache Drill 中获取更多错误详情