编译器的不同阶段是什么?
编译器的各个阶段如下 -
词法分析(扫描仪)
它也被称为扫描仪。这是作为编译器和源语言代码之间集成的第一步。它一次读取一个字符的源代码,并将源代码设计成一系列称为令牌的原子单元。
每个标记都定义了一个字符序列,可以将其视为单个逻辑实体。它可以是标识符、关键字、常量、运算符和标点符号,例如 , 和 ;。
构成记号的字符序列称为记号的词位。它还删除了注释和不必要的空格。
语法分析(解析器)
它也被称为解析器。它接收标记作为其从前一阶段(词法分析)生成的输入,并生成称为语法树或解析树的层次结构。
有两种类型的解析器 -
自下而上- 它从叶子生成解析树并向上扫描,即树的根。
自上而下- 它从根级别生成解析树并向下移动到叶子。
语义分析
此阶段进行语法树输入并确定程序的语义准确性。但是,标记是准确且语法正确的;它们可能是精确的,而不是语义上的。因此,语义分析器确定语句构造的语义(意义)。
中间代码生成
此阶段将语法和语义正确的形式作为输入,并生成与源代码相同的中间符号。
中间代码必须具有以下两个基本属性 -
它必须易于创建。
它可以简单地翻译成目标代码。
代码优化
这是一个可选阶段。它将源程序的中间表示转换为有效的代码。
代码生成
这是编译过程的最后一步。它将优化的中间代码转换为机器/汇编代码。它为程序中的变量分配内存位置。
更好的代码生成只能通过有效利用寄存器来执行。
示例- 像 A = B + C 这样的语句可以转换为汇编代码,如下所示 -
符号表
它是一种数据结构,包括每个标识符的数据、标识符属性的字段。数据结构使我们能够快速找到每个标识符的数据,并快速保存或检索该记录的信息。
错误处理
编译器的主要任务是执行错误检测和报告。当在源代码中发现错误时,将调用此错误处理程序。每个阶段在发现错误后都会遇到错误,阶段应该以某种方式管理该错误,以便编译可以继续。
以上是 编译器的不同阶段是什么? 的全部内容, 来源链接: utcz.com/z/363267.html