2010-08-16 33 views
23

Tôi đang tìm một cuốn sách thiết kế trình biên dịch. Tôi đang học nó ở trường đại học; nhưng các bài giảng không bao giờ có ý nghĩa đối với tôi. Hơn nữa, tại trường đại học của tôi, họ không làm nhiều thực tế và tôi tin rằng ngay cả khi tôi chân thành làm khóa học về tự động hóa hữu hạn và thiết kế trình biên dịch, tôi sẽ không biết làm thế nào để thực hiện một trình biên dịch. Vì vậy, tôi đang tìm kiếm sách về việc triển khai trình biên dịch. Tôi tìm thấy "Modern Compiler Implementation" tốt. Nó có ba lựa chọn ngôn ngữ và tôi đã chọn cuốn sách C vì C là một ngôn ngữ nhỏ sẽ có nhiều hơn cho tôi để làm và nhiều hơn nữa để tìm hiểu trong khi làm. Tuy nhiên, tôi muốn học khóa học thiết kế trình biên dịch cho Lisp hoặc python [có thể cùng ngôn ngữ]; nhưng tôi không thể tìm thấy nhiều tài liệu có sẵn. Lisp là một ngôn ngữ cũ và cần có một số tài liệu về thiết kế một trình biên dịch cho nó. Tôi cần đề xuất của bạn về việc này.Thiết kế trình biên dịch Lisp

Cảm ơn bạn.

+2

Các câu hỏi về tài nguyên biên dịch chuẩn là [Học cách viết trình biên dịch] (http://stackoverflow.com/questions/1669/learning-to-write-a-compiler). – dmckee

+1

Tôi thích ý tưởng viết một trình biên dịch Scheme/Lisp bởi vì bạn không phải xử lý tất cả các lexing và phân tích cú pháp và các cấu trúc và ngữ pháp tương đối đơn giản. – erjiang

+1

@erijang: một 'chỉ' có để thực hiện các máy móc để đọc một số hình thức cho các biểu thức, thực hiện một số hình thức đặc biệt (nói, 30) và một hệ thống vĩ mô. Các tài liệu về sau này là rất lớn. –

Trả lời

23

Lisp in small pieces có lẽ là cuốn sách hay nhất về triển khai Lisp. Rat khuyen khich. Có thể có sẵn thông qua một số dịch vụ sách được sử dụng. Nó có thể đắt tiền, ngay cả khi một cuốn sách được sử dụng. Nó là một bản dịch từ bản gốc tiếng Pháp. Ngoài ra còn có một phiên bản sửa đổi bằng tiếng Pháp, không được dịch sang tiếng Anh - thật không may.

Tôi cũng khuyên bạn nên Paradigms of Artificial Intelligence Programming, Case Studies in Common Lisp bởi Peter Norvig. Nó chứa mô tả của một trình biên dịch Scheme được viết bằng Common Lisp. Nói chung đây là một cuốn sách nổi bật.

Đồng thời xem Biblography này trên Scheme implementation techniques.

Đối với Lisp thông thường có các bài viết có sẵn và một số trình biên dịch Lisp thường gặp với một chút tài liệu về triển khai thực hiện và trình biên dịch nội bộ. Thông thường trình biên dịch không thể được nhìn thấy trong sự cô lập, nhưng nên được nhìn thấy kết hợp với thời gian chạy nó biên dịch thành (GC, bộ lệnh, quản lý bộ nhớ nói chung, luồng, giao diện FFI, ...). Xem ví dụ: Design of CMU Common Lisp.

7

Đây không phải là chính xác cho Lisp, nhưng đối với Đề án (một dẫn xuất lisp), nhưng chúng tôi sử dụng văn bản miễn phí (như trong bia) trong lớp ngôn ngữ lập trình của tôi. Đây là liên kết:

http://www.cs.brown.edu/~sk/Publications/Books/ProgLangs/

Hãy ghi nhớ, tuy nhiên, họ đang dạy làm thế nào để viết một thông dịch viên Đề án trong Đề án không ai khác hơn. Lần đầu tiên, bạn có thể cảm nhận được đầu óc của mình, nhưng nó trở nên rõ ràng hơn sau một thời gian. Tôi không chắc chắn nếu đây là những gì bạn đang tìm kiếm, nhưng đó là một sự khởi đầu và minh họa một số điều quan trọng hơn để suy nghĩ về.

5

Tôi chưa bao giờ đọc nó, nhưng tại một thời điểm có một cuốn sách gọi là "Lisp in Small Pieces" được cho là khá tốt cho mục đích của bạn.

14

Dưới đây là tổng quan tuyệt vời về thiết kế trình biên dịch cho Đề án: An Incremental Approach to Compiler Construction. Đó là một bài viết khá ngắn mô tả cách xây dựng một trình biên dịch mã máy cho Scheme "từ đầu".

Các vấn đề liên quan