【发布时间】:2011-02-26 09:12:22
【问题描述】:
我想看看 g++ 在编译过程中生成的语法树。实际上,我想了解 g++ 编译器如何解析高级 C++ 语句(尤其是类和结构对象的初始化语句)以及编译器如何对这些构造进行语义分析。我的目标仅针对 g++,任何有关解析和语义分析的一般信息都对我没有帮助。
查看 g++ 代码,我可以找到内部使用的数据结构以及它在文件 tree.def 等中创建的不同类型的节点。我想知道是否有很好的文档可以解释这个问题。任何帮助将不胜感激。
【问题讨论】:
-
GCC 使用两棵树。对于 C++,它使用类似于 GENERIC 但具有 C++ 特定扩展的树。对于完成优化的中间端,它使用 GIMPLE 树。我推荐阅读GCC internals。