Emacs implementiert einen Interpreter für elisp in C, der als De-facto- Referenzimplementierung dient . Gibt es andere Implementierungen von elisp in anderen Sprachen (insbesondere Javascript)? Was ist ein minimaler Satz von Primitiven, um elisp vollständig neu zu implementieren? Was sind die wesentlichen Schwierigkeiten dabei (zB dynamisches Scoping)?
12
Antworten:
Guile Emacs ist eine Emacs-Implementierung, bei der der ursprüngliche Emacs-Lisp-Interpreter kürzlich durch libguile ersetzt wurde. Es gibt immer noch Interoperationsprobleme (Guile und Emacs haben zum Beispiel unterschiedliche Vorstellungen von Strings), aber der vorhandene Emacs-Lisp-Code kann bereits verwendet werden (allerdings mit ziemlich einschüchternden Performance-Einschränkungen).
Alternativ gibt es nicferrier ‚s Ejit . In der README-Datei werden die damit verbundenen Schwierigkeiten beschrieben, z. B. bestimmte Dinge, die nur in Emacs einen Kontext ergeben, und wie eine minimale Menge von Grundelementen ausgewählt wird, bevor Emacs Lisp in Javascript kompiliert wird. Es handelt sich also nicht wirklich um eine Neuimplementierung, kann aber bei der Beantwortung Ihrer letzten Fragen hilfreich sein.
quelle