什么是预测分析器?
预测分析器也是另一种实现自顶向下解析技术而不回溯的方法。预测分析器是一种有效的执行递归下降解析技术,特别是通过管理激活记录的堆栈。
预测分析器具有以下组件:
- 输入缓冲区 - 输入缓冲区包含要解析的字符串,后跟一个结束标记$表示字符串的结尾。
这里a、+、b是终结符。
- 堆栈 - 它包含语法符号的组合,堆栈底部为$。在解析开始时,堆栈包含语法的起始符号,后跟$。
- 解析表 - 它是一个二维数组或矩阵M[A, a],其中A是非终结符,'a'是终结符。
所有终结符都按列写入,所有非终结符都按行写入。
- 解析程序 - 解析程序通过比较堆栈顶部的符号和输入缓冲区上要读取的当前输入符号来执行某些操作。
- 操作 - 解析程序根据堆栈顶部的符号和当前输入符号采取各种操作。采取的各种操作如下所示:
构建预测分析表的算法
输入 - 上下文无关文法 G
输出 - 预测分析表 M
方法 - 对于文法 G 的产生式 A → α。
- 对于FIRST(α)中的每个终结符a,将A → α添加到M[A, a]中。
- 如果ε在FIRST(α)中,并且b在FOLLOW(A)中,则将A → α添加到M[A, b]中。
- 如果ε在FIRST(α)中,并且$在FOLLOW(A)中,则将A → α添加到M[A, $]中。
- 表M中所有剩余的条目都是错误的。
执行预测分析的步骤如下:
- 消除左递归
- 左因子化
- 计算FIRST和FOLLOW
- 构建预测分析表
- 解析输入字符串
广告