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

📅  最后修改于: 2021-09-27 22:41:03             🧑  作者: Mango

解析器是编译器的一个阶段,它以标记字符串为输入,并借助现有语法将其转换为相应的解析树。解析器也称为语法分析器。

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

1. 自顶向下解析器
自顶向下的解析器是在语法产生式的帮助下通过扩展非终结符来为给定的输入字符串生成解析的解析器,即它从开始符号开始到终结符结束。它使用最左推导。
进一步的自顶向下解析器分为两种类型:递归下降解析器和非递归下降解析器。

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

2. 自底向上解析器
自底向上解析器是在语法产生式的帮助下通过压缩非终结符来为给定的输入字符串生成解析树的解析器,即它从非终结符开始并在开始符号处结束。它使用最右边推导的反向。
进一步的自底向上解析器分为 2 种类型:LR 解析器和运算符优先级解析器。

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