编译原理预测分析表自顶向下的语法分析实现

递归下降

递归子程序方法的思路:递归子程序法是一种确定的自顶向下语法分析方法,要求文法是LL(1)文法。它的实现思想是对应文法中每个非终结符编写一个递归过程,每个过程的功能是识别由该非终结符推出的串,当某非终结符的产生式有多个候选式时能够按LL(1)形式唯一地确定选择某个候选式进行推导。

具体请看:

递归下降实现LL(1)文法分析C语言与Python实现

预测分析表

预测分析方法的思路:预测分析法是一种表驱动的方法,它由下推栈,预测分析表和控制程序组成。实际上是一种下推自动机的实现模型。预测分析法的关键为预测分析表的构建,即文法中各非终结符first集和follow集的求得。预测分析法从开始符号开始,根据当前句型的最左边的非终结符和分析串中的当前符号,查预测分析表确定下一步推导所要选择的产生式,最终得到输入串的最左推导,完成输入串的语法检查。

流程图

Python代码

测试数据

  • E->TM
  • M->+TM|~
  • T->FN
  • N->*FN|~
  • F->i|(E)

生成的表

句子分析 i+i*i

留下评论

您的邮箱地址不会被公开。 必填项已用 * 标注