构造一个自己的编译器,看似是一个需要非常多的programming的事情,但是实际上借助现代的工具,构造一个编译器并不是我们想象中的那么困难。
当然你也可以追求手撕编译器的极致体验,这当然很好,但是重复造轮子对于初学者从宏观和大局上理解编译器的架构的作用并不大,现代的分析器生成工具,可以让我们把精力集中在重要的部分,而且bug的调试也较为简单。
先简单介绍一下我们将要使用的工具集:
flex:基于lex 的词法分析器的生成器
bison:基于yacc语法分析器的生成器
LLVM:
再来简单介绍一下编译器的各个流程: