代码之家  ›  专栏  ›  技术社区  ›  Color

emacs解释器如何计算表达式?

  •  0
  • Color  · 技术社区  · 8 年前

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

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

    • 只有s表达式(所以字节码只是s表达式的一种?)。
    • 仅字节码(因此s表达式将在求值前编译?)。
    • 它们都是(那么为什么不仅仅是字节码呢?)。

    我认为emacs只有一个解释器,它只能计算s表达式,字节码是一种s表达式。那么,为什么解释器在求值之前不将s表达式编译成字节码,为什么我们需要 byte-compile 作用宏的原因?

    1 回复  |  直到 8 年前
        1
  •  1
  •   Dirk    8 年前

    GNU emacs既有 evaluator ,适用于S表达式,以及 byte-code compiler + interpreter .

    对于简单的命令和函数,使用计算器是很好的,因为它避免了编译的开销。这对于交互定义的助手来说很方便,比如一些快速拼凑起来的函数来修改缓冲区的内容。

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