我知道Ruby 1.8 AST
是在運行時使用一個大的switch語句遍歷的,許多事情,比如在類或父模塊中調用一個方法,都會涉及到解釋器在樹的上下查找。在Ruby C
擴展中有沒有直接訪問AST
的方法?它是否涉及Ruby擴展API,或者需要直接竊取內部數據結構?如何從C代碼訪問Ruby AST?
2
A
回答
1
一個好的起點可能是讀取ParseTree庫的來源,它可以讓你從ruby中弄到AST並且弄亂AST。
1
感謝您的提示。你是對的 - ParseTree
似乎是唯一的代碼,除了它實際上是用RubyInline編寫的以外,還有對AST的任何操作。
所以,這是Ruby和C代碼之間的奇怪混合。雖然,非常有趣的閱讀。
另一個參考當然是Ruby本身的eval.c。
這將需要一點點的閱讀兩個,讓我的頭。
相關問題
- 1. 如何從AST轉到後端代碼?
- 2. 從AST生成源代碼
- 3. 如何從Objective-C代碼中提取AST?
- 4. 我會如何將Ripper的AST重新編譯回Ruby代碼?
- 5. 從C#代碼中訪問F#映射
- 6. 無法從C#代碼訪問GAC
- 7. 從.JS javascript文件訪問C#代碼
- 8. 從C++代碼訪問Azure存儲表
- 9. 如何從java代碼訪問applet?
- 10. 如何從Node.js代碼訪問Event Loop?
- 11. 如何從Python代碼訪問$ {buildout:directory}?
- 12. 如何從javascript代碼訪問appInsights.context
- 13. 如何從代碼背後訪問templatefield
- 14. 訪問C代碼的HTML代碼#
- 15. 有權訪問頭文件,如何訪問.dll的C++代碼?
- 16. 任何代碼如何從uitabbarcontroller訪問viewcontroller的代碼示例?
- 17. 如何訪問VSCode創建的AST
- 18. 用於測試AST訪問者的Java源代碼
- 19. 如何訪問Javascript代碼
- 20. 在END中訪問Ruby退出代碼
- 21. 如何從Objective-C代碼訪問Swift類級枚舉
- 22. 如何從JNI/NDK C++代碼訪問/ res/raw?
- 23. 如何從C#代碼訪問Oracle數據庫觸發器代碼
- 24. 無法修改pycparser AST |轉換AST到C代碼
- 25. C源代碼AST中的AST解析器
- 26. 如何將IL代碼翻譯爲AST
- 27. 如何將TypeScript代碼解析爲AST
- 28. 從Ruby塊中提取AST
- 29. 從C#代碼隱藏中訪問App_Code中的VB代碼
- 30. Rascal AST訪問訪問註釋
嘿!出於興趣,你在寫什麼? :) – horseyguy 2009-08-10 20:54:15