📜  编译器设计中的解析器类型

📅  最后修改于: 2021-06-28 07:09:19             🧑  作者: Mango

解析器是编译器的阶段,该阶段将令牌字符串作为输入,并在现有语法的帮助下将其转换为相应的解析树。解析器也称为语法分析器。

解析器的类型:
解析器主要分为两类:自上而下的解析器和自下而上的解析器。这些解释如下。

1.自上而下的解析器
自上而下的语法分析器是一种语法分析器,它通过扩展非终结来借助语法生成为给定的输入字符串生成解析,即它从起始符号开始并在终结符上终止。它使用最左导数。
进一步的自上而下的解析器分为2种类型:递归下降解析器和非递归下降解析器。

  • (一世)。递归下降解析器
    也称为蛮力解析器或with backtracking解析器。它基本上是通过使用蛮力和回溯来生成分析树的。
  • (ii)。非递归下降解析器:
    它也称为LL(1)解析器或预测解析器,或者不带回溯解析器或动态解析器。它使用解析表来生成解析树,而不是回溯。

2.自下而上的解析器
自下而上的解析器是一种语法分析器,它通过压缩非终结符(即,它从非终结符开始并在开始符号处结束),借助语法生成为给定的输入字符串生成解析树。它使用最右派生的逆向。
自下而上的解析器又分为2种类型:LR解析器和运算符优先级解析器。

  • (一世)。 LR解析器:
    LR解析器是一种自底向上的解析器,它通过使用明确的语法为给定的字符串生成解析树。它遵循最右派生的反向。
    LR解析器有4种类型:
(a). LR(0)
(b). SLR(1)
(c). LALR(1)
(d). CLR(1) 
  • (ii)。运算符优先级解析器
    它根据给定的语法和字符串生成解析树形式,但唯一的条件是两个连续的非终结符,并且epsilon永远不会出现在任何生成的右边。