重新实现Elisp


12

Emacs在C中为elisp实现了一个解释器,该解释器实际上是参考实现。elisp是否有其他语言(特别是Javascript)的其他实现?完全重新实现elisp所需的最少基本元素集是什么?这样做的主要困难是什么(例如动态范围界定)?


一个很好的起点是:en.wikibooks.org/wiki/Write_Yourself_a_Scheme_in_48_Hours 尽管方案和elisp有所不同,但我认为以上内容是了解所需基本知识的一个很好的开始。
Renan Ranelli 2014年

Answers:


5

Guile Emacs是Emacs的实现,其中原始的Emacs Lisp解释器最近被libguile取代。仍然存在互操作问题(例如,Guile和Emacs对字符串有不同的想法),但是现有的Emacs Lisp代码已经可以使用(尽管具有令人生畏的性能下降)。

另外,还有nicferrierEjit。它的自述文件确实描述了所涉及的困难,例如某些事情仅在Emacs中建立上下文,以及在将Emacs Lisp编译为Javascript之前如何选择最少的原语集。因此,它并不是真正的重新实现,但可能有助于回答您后面的问题。


请注意: Ejit可以编译为JS,它不是用JS编写的。
马拉巴巴

是的,该段旨在回答以下问题:最小的原语集是什么,因为其目的是在编译为JS之前尽可能地识别和简化这些原语。还描述了一些困难(例如,缓冲区及其属性意义不大)。
wasamasa 2014年

2
我认为您想指出桂尔本身。Guile Emacs项目虽然是一个重要的用例,但在这里更多地是附带说明。
菲尔2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.