/ / W jaki sposób interpreter emacs ocenia wyrażenie? - emacs, elisp

W jaki sposób interpreter emacs ocenia wyrażenie? - emacs, elisp

Czy w maszynie wirtualnej emacs lub w jednym tłumaczu jest dostępny interpreter elowy i interpreter kodu bajtowego?

Jeśli jest tylko jeden interpreter, jaki format kodu może ocenić?

  • Tylko s-expression (więc bajtowy kod jest tylko rodzajem s-wyrażenia?).
  • Tylko kod bajtowy (więc s-wyrażenie zostanie skompilowane przed obliczeniem?).
  • Oba z nich (to dlaczego nie tylko bajt kodu?).

Myślę, że emacs ma tylko jednego tłumacza, możeocenia tylko s-expression, kod bajtowy jest rodzajem s-wyrażenia. W takim razie dlaczego interpreter nie kompiluje wyrażenia s do kodu bajtowego przed oceną, dlaczego potrzebujemy tego byte-compile funkcjonować? Przyczyna makr?

Odpowiedzi:

1 dla odpowiedzi № 1

GNU emacs ma oba, oceniający, który działa na wyrażeń S, i kompilator bajtów + interpretator.

Posiadanie oceniającego jest dobre dla prostych poleceńi funkcje, ponieważ pozwala uniknąć kompilacji. Jest to wygodne dla interaktywnie zdefiniowanych pomocników, powiedzmy, niektórych szybko zhakowanych funkcji służących do modyfikowania zawartości bufora.

Używanie interpretera kodu bajtowego jest przydatne, ponieważzwiększa szybkość wykonania i obniża obciążenie pamięciowe ze względu na gęstszą reprezentację kodu. Jest to problem, ponieważ wiele (jeśli nie większość) emacs jest zaimplementowana w seplenienie.