我知道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