如果我想修改或添加自己的擴展到C,並將它們添加到GCC C編譯器,我需要做什麼?我不想提出對語言的更改,我想知道C編譯器是如何工作的。如何向GCC添加基於C語言
我已經看了一下GCC的源代碼,它看起來好像Objective-C被實現爲一個簡單的解析器,該解析器生成引用修改後的運行時庫的代碼,然後生成所有基於C的引用它使用常規的C編譯器。我沒有深入研究過,所以我可能不在正確的軌道上。
舉例來說,我想將我自己的關鍵字添加到Objective-C中,只是爲了好玩。我想添加一些似乎易於實現的內容,例如@assert
。所有我想要的是@assert
打電話,我會加入到Objective-C的運行時函數:
objc_runtime_assert (__FILE__, __LINE__, expression, "string version of expression");
顯然,我可以實現這個和函數調用和宏觀反正,但我想獲得的理解C源代碼的解析和編譯階段,也許我可以將自己的擴展添加到我自己使用的語言中。
我一直關注的源代碼是指「樹」,並且有許多執行操作或從這些樹中獲取信息的宏。
有沒有任何文檔可以深入解釋這類事情?
我不能幫你,但看看http://en.wikipedia.org/wiki/Abstract_syntax_tree – 2009-05-01 11:29:29