【问题标题】:Understanding abstract syntax tree generated in front-end phase of g++ compilation理解g++编译前端阶段生成的抽象语法树
【发布时间】:2011-02-26 09:12:22
【问题描述】:

我想看看 g++ 在编译过程中生成的语法树。实际上,我想了解 g++ 编译器如何解析高级 C++ 语句(尤其是类和结构对象的初始化语句)以及编译器如何对这些构造进行语义分析。我的目标仅针对 g++,任何有关解析和语义分析的一般信息都对我没有帮助。

查看 g++ 代码,我可以找到内部使用的数据结构以及它在文件 tree.def 等中创建的不同类型的节点。我想知道是否有很好的文档可以解释这个问题。任何帮助将不胜感激。

【问题讨论】:

  • GCC 使用两棵树。对于 C++,它使用类似于 GENERIC 但具有 C++ 特定扩展的树。对于完成优化的中间端,它使用 GIMPLE 树。我推荐阅读GCC internals

标签: c++ parsing g++


【解决方案1】:

除了上面提到的 GCC 内部文档之外,还有一个名为 Treehydra 的 Mozilla 项目,它是一个 gcc 插件,实际上可以让您使用 Javascript 来玩弄 GIMPLE AST。 IMO 这是了解 GCC 实施的好方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多