如何从C级代码访问Ruby AST?

时间:2008-08-17 22:23:59

标签: c ruby tree interpreter

我理解Ruby 1.8 AST在运行时使用一个大的switch语句遍历,并且许多事情,如调用类或父模块中的方法,涉及到解释器在树中向上和向下查看。是否有一种直接的方法可以在AST扩展程序中访问此Ruby C?它是否涉及Ruby扩展API,或者是否需要直接破解内部数据结构?

2 个答案:

答案 0 :(得分:1)

一个很好的起点可能是阅读ParseTree库的来源,这可以让你从红宝石中获取和混淆AST。

答案 1 :(得分:0)

感谢您的提示。你是对的 - ParseTree似乎是唯一一个对AST进行任何操作的代码,除了它实际上是用RubyInline编写的。

所以,这是Ruby和C代码之间的奇怪混合。但阅读非常有趣。

另一个参考当然是来自Ruby本身的eval.c。

要对两者进行相当多的阅读,以便了解它。