我知道Ruby 1.8 AST
在运行时使用大 switch 语句遍历,并且许多事情,比如在类或父模块中调用方法,都需要解释器在树上上下查找。有没有一种直接的方法可以AST
在Ruby C
扩展中访问它?它是否涉及 Ruby 扩展 API,或者需要直接破解内部数据结构?
maetl
问问题
676 次
2 回答
1
一个很好的起点可能是阅读ParseTree库的源代码,它可以让您从 ruby 中获取和处理 AST。
于 2008-08-17T22:36:13.103 回答
0
谢谢你的提示。你是对的 -ParseTree
似乎是唯一可以对 AST 进行任何操作的代码,除了它实际上是用 RubyInline 编写的。
因此,这是 Ruby 和 C 代码之间的奇怪混合。非常有趣的阅读,虽然。
另一个参考当然是来自 Ruby 本身的 eval.c。
这将需要对两者进行相当多的阅读,才能理解它。
于 2008-08-18T12:11:19.837 回答