2016-10-21 38 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