Có cách nào để thực sự viết một trình biên dịch bằng ngôn ngữ riêng của nó không?
Bạn phải có một số ngôn ngữ hiện có để viết trình biên dịch mới của mình. Nếu bạn đang viết một trình biên dịch C ++ mới, bạn chỉ cần viết nó bằng C ++ và biên dịch nó bằng một trình biên dịch hiện có trước. Mặt khác, nếu bạn đang tạo một trình biên dịch cho một ngôn ngữ mới, hãy gọi nó là Yazzleof, trước tiên bạn cần viết trình biên dịch mới bằng một ngôn ngữ khác. Nói chung, đây sẽ là một ngôn ngữ lập trình khác, nhưng nó không nhất thiết phải như vậy. Nó có thể là lắp ráp, hoặc nếu cần, mã máy.
Nếu bạn đang đi để bootstrap một trình biên dịch cho Yazzleof, bạn thường sẽ không viết một trình biên dịch cho toàn bộ ngôn ngữ ban đầu. Thay vào đó, bạn sẽ viết một trình biên dịch cho Yazzle-lite, tập hợp con nhỏ nhất có thể có của Yazzleof (tốt, ít nhất là một tập hợp con khá nhỏ ). Sau đó, trong Yazzle-lite, bạn sẽ viết một trình biên dịch cho ngôn ngữ đầy đủ. (Rõ ràng là điều này có thể xảy ra lặp đi lặp lại thay vì chỉ trong một lần nhảy.) Bởi vì Yazzle-lite là một tập hợp con thích hợp của Yazzleof, bây giờ bạn có một trình biên dịch có thể tự biên dịch.
Có một bài viết thực sự tốt về việc khởi động một trình biên dịch từ mức thấp nhất có thể (mà trên một máy hiện đại về cơ bản là một trình soạn thảo hex), có tiêu đề Bootstrapping một trình biên dịch đơn giản từ hư vô . Nó có thể được tìm thấy tại https://web.archive.org/web/20061108010907/http://www.rano.org/bcompiler.html .