编译器编写者可以使用一些专用的工具来帮助实现编译器的各个阶段。这些工具有助于创建整个编译器或其各个部分。一些常用的编译器构造工具包括:
- 解析器生成器–
它从输入中生成语法分析器(解析器),该语法分析器基于编程语言的语法描述或上下文无关的语法。这是有用的,因为语法分析阶段非常复杂,并且会花费更多的手动和编译时间。
示例:PIC,EQM - 扫描仪发生器–
它根据基于语言标记的正则表达式描述从输入中生成词法分析器。它生成一个有限的自动机来识别正则表达式。
示例:Lex - 语法导向的翻译引擎–
它从包含解析树的输入中生成具有三种地址格式的中间代码。这些引擎具有例程以遍历解析树,然后生成中间代码。这样,解析树的每个节点都与一个或多个转换相关联。 - 自动代码生成器–
它为目标机器生成机器语言。中间语言的每种操作都使用一组规则进行翻译,然后由代码生成器作为输入。使用模板匹配过程。使用模板将中间语言语句替换为其等效的机器语言语句。 - 数据流分析引擎–
它用于代码优化。数据流分析是代码优化的关键部分,它收集信息,即从程序的一个部分流到另一个部分的值。参考–编译器中的数据流分析 - 编译器构建工具包–
它提供了一套完整的例程,有助于构建编译器组件或构建编译器的各个阶段。