Mặc dù các nhận xét và bài đăng khác là đúng, câu hỏi này quá mơ hồ và có thể hơi bối rối, tôi không thể không chia sẻ một số đề xuất. Tôi đã thu thập một số liên kết và sách về triển khai Lisp vì gần đây tôi đã phát triển một chút đam mê với việc thực hiện ngôn ngữ.Đó là một chủ đề sâu, tất nhiên, nhưng đọc những thứ liên quan đến Lisp là đặc biệt hấp dẫn bởi vì bạn có thể bỏ qua rất nhiều đọc mạnh về phân tích cú pháp nếu bạn thực hiện một trình biên dịch Lisp hoặc thông dịch viên trong Lisp, và chỉ sử dụng read
. Điều này cho phép các tác giả tìm đến phần biên dịch hoặc giải thích nhanh chóng. Những khuyến nghị này là những cuốn sách tôi đã đọc hoặc bắt đầu hoặc đang đọc, và chủ yếu là đối phó với Đề án, không phải là Common Lisp, nhưng vẫn có thể có một số sự quan tâm.
Nếu bạn không có nền tảng trong việc thực hiện ngôn ngữ và chưa bao giờ có niềm vui khi đọc về Lisp và Scheme "bộ đánh giá siêu vòng cổ điển", tôi sẽ giới thiệu Structure and Interpretation of Computer Programs. Nếu bạn đã thấy Lisp-in-Lisp (hoặc Scheme-in-Scheme ...), bạn có thể bỏ qua. Trong hai chương cuối của SICP, các tác giả trình bày một vài thông dịch viên khác nhau cho Lisp/Scheme và một vài biến thể, cũng như một trình biên dịch mã byte và một máy ảo. Nó chỉ đơn giản là một cuốn sách tuyệt vời, và miễn phí.
Nếu bạn không có thời gian để đọc SICP, hoặc không muốn đăng nhập thông qua nó chỉ để có được các chương giải thích và biên dịch, tôi sẽ khuyên bạn nên The Little Schemer. Mặc dù nó rất ngắn và dành cho những người mới đến Lisp và Scheme, nếu bạn chưa bao giờ thấy một thông dịch viên Lisp viết bằng Lisp, họ trình bày một cuốn sách, và nó là một cuốn sách thú vị, nhưng có thể không dành cho mọi người do phong cách dễ thương .
Có một cuốn sách miễn phí khác về Đề án tương tự như SICP, được gọi là An Introduction to Scheme and its Implementation, mà tôi chưa đọc nhưng được sử dụng làm tài liệu tham khảo cho một vài bit. Có những phần về thông dịch viên và trình biên dịch trong đó, và nó dường như đi sâu hơn một chút so với SICP, giao dịch với những thứ hai chiều như phân tích quá. Nó có thể cần một trình soạn thảo, nhưng đó là một lời đề nghị ấn tượng.
Với ý tưởng tốt về cách thực hiện Lisp trong Lisp, bạn có thể tiếp cận triển khai Lisp ở mức độ thấp hơn.
Lisp in Small Pieces thường được đề xuất. Tôi đã đọc hầu hết nó, và có thể nói đó chắc chắn là một cuốn sách tuyệt vời, đầy những thứ gritty nitty. Tôi sẽ quay trở lại với một chiếc lược tốt, bởi vì nó dễ dàng để lướt qua khi bạn không hiểu công cụ. Tôi cũng phải vật lộn với việc lấy mã từ trang của tác giả để chạy; nếu bạn nhận được nó, tôi khuyên bạn nên sử dụng Gambit Scheme và chạy mã dựa trên Meroonet với Meroon, từ phân phối this. Lisp in Small Pieces trình bày một số thông dịch viên được viết trong Đề án cũng như trình biên dịch mã byte và trình biên dịch-tới-C.
Lisp in Pieces nhỏ di chuyển nhanh và khá dày đặc. Nếu nó quá nhiều cho bạn, có lẽ bắt đầu với The Essentials of Programming Languages. Tôi đã đọc một số của nó và nó khá tốt, nhưng nó là nhiều thông dịch viên hơn. Rõ ràng là một trong những phiên bản cũ (1st? Tôi không chắc chắn ...) bao gồm một trình biên dịch. Có vẻ như có rất nhiều thay đổi giữa 3 phiên bản, nhưng lần đầu tiên là siêu rẻ trên Amazon, vì vậy hãy kiểm tra nó.
Để biên dịch thành C, đây là loại chủ thể thô với nhiều bit lông. Việc biên dịch thành C sẽ trả về tất cả các vấn đề góc kỳ lạ, như cách tối ưu hóa các cuộc gọi đuôi và xử lý các đóng, tiếp tục lớp đầu tiên và thu gom rác, nhưng nó khá thú vị và rất nhiều triển khai thực hiện của Scheme. Bài trình bày của Marc Feeley về điều này khá thú vị, có tiêu đề The 90 Minute Scheme to C compiler.
Tôi có ít tài nguyên hơn để biên soạn tất cả các cách để lắp ráp, nhưng có một bài báo thường được giới thiệu để biên soạn Đề án thành x86, được gọi là An Incremental Approach to Compiler Construction. Nó giả định rất ít người đọc, tuy nhiên tôi thấy rằng nó chỉ đơn giản là đi quá nhanh và không điền đủ chi tiết. Có lẽ bạn sẽ có may mắn hơn.
Rất nhiều đề xuất ở trên xuất phát từ nhận xét quái vật này trên Hacker News từ hơn một năm trước, từ mahmud. Nó tham khảo một số tài nguyên ML, và biên dịch bằng cách sử dụng tiếp tục.Tôi đã không nhận được điều đó trong nghiên cứu của tôi, vì vậy tôi không thể nói những gì tốt hay không. Nhưng đó là một nhận xét vô cùng quý giá. Các tác phẩm được tham chiếu bao gồm "Biên dịch với các sự tiếp tục" của Andrew Appel và bài "Kỹ thuật thu gom rác không cần xử lý" của Paul Wilson.
Chúc may mắn!
Điều này không có ý nghĩa gì cả – Mehrdad