Ani*_*nge 6 java scheme code-generation compilation
我正在编写一个Scheme解释器(尝试完全兼容R5RS),这让我感到震惊的是编译成VM操作码会使它更快.(如果我错了,请纠正我.)我可以解释内存中的Scheme源代码,但我仍然坚持理解代码生成.
我的问题是:从解析树生成操作码需要哪些模式,例如JVM或任何其他VM(甚至是真机)?如果有的话,这样做的复杂性,优点或缺点是什么?
对于Scheme,将有两个与JVM相关的主要复杂问题.
首先,JVM不支持显式尾部调用注释,因此,如果不采用昂贵的迷你解释器技巧,您将无法保证R5RS(3.5)所要求的正确尾递归.
第二个问题是持续支持.JVM没有为实现continuation提供任何有用的东西,所以你再次使用迷你解释器.即,每个CPS平凡函数应返回下一个闭包,然后由无限小解释器循环调用.
但仍有许多有趣的优化可能性.我建议你看看Bigloo(有一个相对较快的JVM后端)和Kawa.对于一般的编译技术,请在90分钟内查看Scheme.
而且,解释是编译的可行替代方案(至少在JVM上,由于其严重的局限性和一般的低效率).了解SISC的实施方式,这是一种非常有趣和创新的方法.