2016-10-21 39 views
0

emacs VM中是否有elisp解释器和字节码解释器,或者是一个解释器?emacs解释器如何评估表达式?

如果只有一个解释器,它可以评估哪种代码格式?

  • 只有s表达式(所以字节码只是一种s表达式?)。
  • 只有字节码(所以s-expression将在评估前被编译?)。
  • 他们俩(为什么不只是字节码?)。

我觉得emacs只有一个解释器,它只能评估s表达式,字节码是一种s表达式。那么为什么解释器在评估之前没有将s表达式编译成字节码,为什么我们需要byte-compile函数呢?宏的原因?

回答

1

GNU emacs有两个,一个是evaluator,用于S表达式,一个是byte-code compiler + interpreter

拥有评估器对于简单的命令和函数来说很好,因为它避免了编译的开销。这对于交互式定义的助手很方便,比如说,有些功能可以快速入侵函数来修改缓冲区的内容。

使用字节码解释器很有用,因为它提高了执行速度并降低了由于代码密集表示而导致的内存开销。这是一个问题,因为很多(如果不是大多数)emacs是在lisp中实现的。

+0

不错的答案,谢谢你的帮助! – Color