Tái hiện Elisp


12

Emacs thực hiện một trình thông dịch cho elisp trong C, đóng vai trò là triển khai tham chiếu thực tế . Có bất kỳ triển khai nào khác của elisp trong các ngôn ngữ khác (đặc biệt là Javascript) không? Một tập hợp tối thiểu các nguyên thủy cần thiết để thực hiện lại đầy đủ elisp là gì? Những khó khăn thiết yếu khi làm như vậy (ví dụ phạm vi động) là gì?


Một điểm khởi đầu tốt sẽ là: en.wikibooks.org/wiki/Write_Yourself_a_Scheme_in_48_Hours Mặc dù sơ đồ và elisp có sự khác biệt của chúng, tôi nghĩ ở trên là một khởi đầu tốt để hiểu những thứ cơ bản cần thiết.
Renan Ranelli

Câu trả lời:


5

Guile Emacs là một triển khai Emacs trong đó trình thông dịch Lisp gốc của Emacs đã được thay thế bằng libguile gần đây. Vẫn còn các vấn đề tương tác (ví dụ Guile và Emacs có các ý tưởng khác nhau về chuỗi), nhưng mã Lisp Emacs hiện tại có thể đã được sử dụng (mặc dù với các hồi quy hiệu suất khá đáng sợ).

Ngoài ra, có Ejit của nicferrier . README của nó mô tả những khó khăn liên quan, chẳng hạn như một số điều nhất định chỉ tạo bối cảnh trong Emacs và cách chọn một tập hợp nguyên thủy tối thiểu trước khi biên dịch Emacs Lisp sang Javascript. Do đó, nó không thực sự là một sự thực hiện lại, nhưng có thể giúp trả lời các câu hỏi sau của bạn.


Chỉ cần một lưu ý: Ejit biên dịch thành JS, nó không được viết bằng JS.
Malabarba

Vâng, đoạn đó được dự định là câu trả lời cho câu hỏi tập hợp nguyên thủy tối thiểu là gì vì ý định là nhận ra và đơn giản hóa những thứ đó càng nhiều càng tốt trước khi biên dịch thành JS. Một số khó khăn (như, bộ đệm và thuộc tính của chúng làm cho ít ý nghĩa hơn) cũng được mô tả.
wasamasa

2
Tôi nghĩ rằng bạn muốn được chỉ vào Guile. Dự án Guile Emacs, trong khi một trường hợp sử dụng đáng kể, lại là một lưu ý phụ ở đây.
phils 04/11 '
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.