什么是编译器遍历?

什么是编译器遍历?

什么是编译器遍历?

compiler designprogramming languagescomputer programming更新于 2025/9/30 4:52:17

整个源程序在生成汇编/机器码之前可以经过多次处理。

遍历 − 对源程序进行一次完整的扫描或处理。各个阶段可以安排在一个遍历中。词法、语法和语义分析通常集中在一个遍历中。每个遍历读取源程序并将输出写入中间文件,该文件随后可供后续遍历读取,也就是说,一个遍历的输出将成为下一个遍历的输入。

单遍编译器 − 在单遍编译器中,处理一行源代码时,会对其进行扫描并提取标记。然后分析该行的语法,并构建树形结构以及包含每个标记数据的表。

最后,在检查语义部分的正确性后,生成代码。对程序的每一行重复相同的过程,直到整个程序编译完成。通常,整个编译器围绕解析器构建,解析器将调用执行不同功能的过程。

单遍编译器速度很快,因为所有编译器代码都会一次性加载到内存中。它可以处理源文本,而无需操作系统关闭一个进程并启动另一个进程。单遍编译器往往会对程序常量、类型、变量和过程施加一些限制,这些限制必须在使用前定义。

单遍编译器的组件是相互关联的,比多遍编译器的组件更紧密。这要求所有参与项目的程序员都了解整个项目。

多遍编译器 − 编译器扫描输入源一次并生成第一个修改形式,然后扫描第一个生成的形式并生成第二个修改形式,依此类推,直到生成目标形式。这样的编译器被称为多遍编译器。

在多遍编译器的情况下,编译器的每个功能都可以由编译器的一次遍历执行。例如,第一遍可以读取输入源,扫描并提取标记,并将结果保存在输出文件中。

第二遍可以读取第一遍生成的文件,通过构建语法树进行语法分析,并将与树的每个节点相关的所有信息关联起来。第二遍的输出是一个包含语法树的文件。

第三遍可以读取第二遍创建的输出文件,并通过重构树结构进行优化。

相关文章

Convert the following LEX program into Lexical Analyzer.\AUXILIARY DEFINITIONS\ −\ −\ −\TRANSLATION RULES\ a{ }\ abb{ }\ a*b+

在编译器设计中,块结构化语言的实现是什么?

编译器设计中的语法制导翻译方案是什么?

什么是块结构?

什么是过程调用的堆栈分配?

简单堆栈分配方案的实现

什么是堆分配?

什么是堆栈分配?

什么是静态分配?

描述编程语言设计中影响存储管理的问题?

打印

下一节 ❯❮ 上一节

📚 相关推荐

华为手机已保存的联系人来电时不显示姓名
易燃固体、自燃物品、遇湿易燃物品
传说之下绿魂下载
MAC电脑保修问题
易燃固体、自燃物品、遇湿易燃物品
网站取款通道维护一般多久完成