符号表管理
符号表数据结构为每个变量名字创建了一个记录条目。记录的字段就是名字的各个属性。 这个数据结构应该允许编译器迅速查找到每个名字的记录,并向记录中快速存放和获取记录中的数据。
将多个步骤组合成躺
在一个特定的实现中,多个步骤的活动可以被组合成一趟(pass)。每趟读入一个输入文件并产生一个输出文件。比如,前端步骤中的词法分析、语法分析、语义分析,以及中间代码生成可以被组合在一起成为一趟。代码优化可以作为一个可选的趟。然后可以有一个为特定目标机生成代码的后端趟。
有些编译器集合是围绕一组精心设计的中间表示形式而创建的,这些中间表示形式使得我可以把特定语言的前端和特定目标机的后端相结合。使用这些集合,我们可以把不同的前端和某个目标机的后端结合起来,为不同的源语言建立该目标机上的编译器。类似地,我们可以把一个前端和不同的目标机后端结合,建立针对不同目标机的编译器。
编译器构造工具
和任何软件开发者一样,写编译器的人可以充分利用现代的软件开发环境。除了通用的开发工具,人们还创建了一些更加专业的工具来实现编译器的不同阶段。这些工具使用专用的语言来描述和实现特定的组件,其中的很多工具使用了相当复杂的算法。其中最成功的工具都能够隐藏生成算法的细节,并且它们生成的组件易于和编译器的其他部分相集成。一些常用的编译器构造工具包括:语法分析器的生成器 、扫描器的生成器 、语法制导的翻译引擎、代码生成器的生成器、数据流分析引擎、编译器构造工具集