我在http://parsingintro.sourceforge.net/上阅读了文章,并决定尝试将它改写为Ruby中的练习。有两个原因让我这么做,我想了解更多关于如何编写Ruby(Java,PHP,C和一些Python背景)的知识,并且我想了解更多关于解析器/编译器的知识。如何为从假想语言中解析出的AST树生成代码?
我已将所有代码发布在https://github.com/parse/boatcaptain。正在生成AST树,不幸的是本文的作者没有涉及代码生成和优化等概念。
任何人都可以帮助我指出我在正确的方向如何实现这个AST树成“代码”? This is the AST tree that is generated
我几年前在Java中编写了一个计算器,它使用了很多与此解析器中使用的相似的术语和技术。但在计算器中,我有eval()方法来处理我的“类”,因此得到输出,我是否应该在这里做类似的事情?计算器源代码:https://github.com/parse/Uppsala-University-Courses/blob/master/ImpOOP-Calculator/src/Calculator.java
我也很想反馈我写Ruby的方式,我相信我仍然会像编写Python一样编写Ruby,但缺少Ruby的一些优点。
如果你想学习如何做代码生成,请阅读一本关于如何做代码生成的书。 Aho和Ullman的“编译器”是一个经典。不要期望这很容易,如果你想要一个好的代码生成;你不会在没有重要知识的情况下编码你的涅ana。 – 2012-05-08 20:34:37