2008-08-17 121 views
2

我知道Ruby 1.8 AST是在運行時使用一個大的switch語句遍歷的,許多事情,比如在類或父模塊中調用一個方法,都會涉及到解釋器在樹的上下查找。在Ruby C擴展中有沒有直接訪問AST的方法?它是否涉及Ruby擴展API,或者需要直接竊取內部數據結構?如何從C代碼訪問Ruby AST?

回答

1

一個好的起點可能是讀取ParseTree庫的來源,它可以讓你從ruby中弄到AST並且弄亂AST。

1

感謝您的提示。你是對的 - ParseTree似乎是唯一的代碼,除了它實際上是用RubyInline編寫的以外,還有對AST的任何操作。

所以,這是Ruby和C代碼之間的奇怪混合。雖然,非常有趣的閱讀。

另一個參考當然是Ruby本身的eval.c。

這將需要一點點的閱讀兩個,讓我的頭。

+0

嘿!出於興趣,你在寫什麼? :) – horseyguy 2009-08-10 20:54:15