2011-02-26 40 views
4

我想查看g ++在編譯期間生成的語法樹。實際上,我想了解g ++編譯器如何解析高級C++語句(尤其是類和結構對象的初始化語句)以及編譯器如何對這些結構進行語義分析。我的目標只針對g ++,任何關於解析和語義分析的一般信息都不會對我有所幫助。瞭解在g ++編譯的前端階段中生成的抽象語法樹

看着g ++代碼,我可以找到裏面使用的數據結構和它在文件tree.def中創建的不同類型的節點等。我想知道是否有好的文檔可用於解釋這個問題。任何幫助將不勝感激。

+1

GCC使用兩棵樹。對於C++,它使用類似於GENERIC的樹,但使用C++特定擴展。對於優化完成的中端,它使用GIMPLE樹。我建議閱讀[GCC內部](http://gcc.gnu.org/onlinedocs/gccint/index.html)。 – 2011-02-26 09:29:24

回答

1

除了上面提到的GCC內部文件,還有一個名爲Treehydra的Mozilla項目,它是一個gcc插件,它實際上可以讓你使用Javascript來玩GIMPLE ASTs。海事組織這是學習GCC實施的好方法。