Max's Zone - 2022年2月
type: channel
link: https://blog.maxxsoft.net/index.php/2022/02/
description: 一个微不足道的幻想者的 Blog = =
items: 【教程】从零开始，写个编译器！

【教程】从零开始，写个编译器！
type: item
date: 2022-02-23T10:57:00+08:00
description: 是的，这又是一个教你写个编译器的教程。你可能已经见过无数个教你写编译器的教程了，但它们也许或多或少存在各种问题，导致你看了它们之后，依然觉得无从下手：教程并非面向“零编译器基础”的人群，理解起来比较费劲。只教了怎么做一个编译器，但没教为什么这么做，读完之后还是觉得一头雾水。开始编码之前，需要复杂的环境配置，开局劝退。上来先做和“编译一个程序”这件事八竿子打不着的东西，跟着教程学一个月才能看到自己的编译器编出一个能跑的程序，反馈周期过长。最终写出来的只是个解释器，或者不能编译到真实的 ISA（例如输出了某种字节码），或者高度依赖其他框架（例如 LLVM），让人体会不到那种“我真的写出个编译器”的成就感，以及“所有事情都由自己实现”的酣畅感。实现的编译器只能编译一些过于简单的程序，比如排序算法等等，看起来非常无聊。谁会没事干排序玩啊？教程及其配套资源非中文，或需要付费，且不开源。研究生期间，我一直在担任本科编译原理课程的助教。为了让本科生更好地理解编译器工作的原理，在参考多个其他教程之后，我设计了一套全新的，教你从零开始写个编译器的教程：[...]