我理解Ruby 1.8 AST
在运行时使用一个大的switch语句遍历,并且许多事情,如调用类或父模块中的方法,涉及到解释器在树中向上和向下查看。是否有一种直接的方法可以在AST
扩展程序中访问此Ruby C
?它是否涉及Ruby扩展API,或者是否需要直接破解内部数据结构?
答案 0 :(得分:1)
一个很好的起点可能是阅读ParseTree库的来源,这可以让你从红宝石中获取和混淆AST。
答案 1 :(得分:0)
感谢您的提示。你是对的 - ParseTree
似乎是唯一一个对AST进行任何操作的代码,除了它实际上是用RubyInline编写的。
所以,这是Ruby和C代码之间的奇怪混合。但阅读非常有趣。
另一个参考当然是来自Ruby本身的eval.c。
要对两者进行相当多的阅读,以便了解它。