什么是解析器?

语法分析或解析器是编译的第二阶段。解析器将前一阶段(即词法分析器阶段)生成的标记作为其输入,并以可以识别它们的语法的方式对它们进行分组。

它将输入作为标记并将它们转换为解析树。

示例 1 - 语句 a = b + c 将被转换为一系列标记 a、b、c、=、+,并且这些标记将由 Parser 转换为 Parse Tree。相应的解析树将生成为 -

Example2 - 为语句绘制解析树。(如果 A = 10)转到 200。

解析的目的是得出源字符串的语法有效性。如果字符串正确,则构建一棵树以供系统的后续阶段使用。树遵循解析期间使用的推导或归约序列。因此,它被称为解析树。

如果字符串为空,则解析器必须发出诊断消息,以识别字符串中错误的性质和生成。解析树中的每个基本子树都对应一个语法的产生。有两种识别基本子树的方法 -

  • 通过从非终端派生字符串

  • 通过将一串符号减少为非终结符。

解析过程包括三个阶段,如下所示 -

  • 词法分析

词法分析是编译器的第一步,它一次读取一个字符并将其转换为一个标记数组。令牌是程序中有意义的字符集合。这些标记可以是关键字,包括do、if、while等,标识符包括x、num、count等,运算符符号包括>、>=、+等,标点符号包括括号或逗号。词法分析器阶段的输出传递到称为语法分析器或解析器的下一个阶段。

  • 语法分析

语法分析阶段也称为解析阶段。它将标记作为词法分析阶段的输入。语法分析将标记组合成语法结构。这个阶段的输出是一个解析树。

  • 语义分析

语义分析阶段检查源代码的语义错误并为后续代码生成阶段组装类型信息。它有助于语法分析阶段确定的层次结构,以识别表达式和语句的运算符和操作数。在此阶段,编译器检查每个运算符是否具有源语言规范允许的操作数。

以上是 什么是解析器? 的全部内容, 来源链接: utcz.com/z/363350.html

回到顶部