在emacs VM中是否有一个elisp解释器和一个字节码解释器,或者是一个解释器?
如果只有一个解释器,它可以评估哪种代码格式?
我认为emacs只有一个解释器,它只能评估s-expression,字节码是一种s-expression。那么为什么解释器在评估之前不会将s-expression编译成字节码,为什么我们需要 public class MyService extends Service {
private static final String TAG = "VYKAL";
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public void onCreate() {
super.onCreate();
Log.i(TAG, "onCreate()");
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
Log.i(TAG, "onStartCommand()");
return START_NOT_STICKY;
}
@Override
public void onTaskRemoved(Intent rootIntent) {
super.onTaskRemoved(rootIntent);
MainActivity.closeActivity();
}
@Override
public void onDestroy() {
super.onDestroy();
Log.i(TAG, "onDestroy()");
}
@Override
public void onLowMemory() {
super.onLowMemory();
Log.i(TAG, "onLowMemory()");
}
}
函数呢?宏的原因?
答案 0 :(得分:1)
GNU emacs有两个,evaluator,适用于S表达式,byte-code compiler + interpreter。
让评估器适用于简单的命令和函数,因为它避免了编译的开销。这对于交互式定义的助手来说非常方便,比如说,有些人很快就会破解一些功能来修改缓冲区的内容。
使用字节码解释器很有用,因为它可以提高执行速度并降低内存开销,因为代码的表示更加密集。这是一个问题,因为在lisp中实现了很多(如果不是大多数)emacs。