【问题标题】:How does emacs interpreter evaluate an expression?emacs 解释器如何评估表达式?
【发布时间】:2016-10-21 07:33:29
【问题描述】:

emacs VM中是否有一个elisp解释器和一个字节码解释器,还是只有一个解释器?

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

  • 只有 s-expression(所以字节码只是一种 s-expression?)。
  • 只有字节码(所以 s-expression 会在评估之前编译?)。
  • 两者都有(那为什么不只是字节码?)。

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

【问题讨论】:

    标签: emacs elisp


    【解决方案1】:

    GNU emacs 有一个 evaluator,它适用于 S 表达式,还有一个 byte-code compiler + interpreter

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

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

    【讨论】:

      猜你喜欢
      • 2013-10-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-13
      • 2013-11-20
      • 1970-01-01
      相关资源
      最近更新 更多