- 1
- 0
- 约1.04万字
- 约 93页
- 2022-04-27 发布于广东
- 举报
4.2.7 预测分析程序 一、预测分析程序工作原理 if(a ∈FIRST(?i)) 用A→?i推导 else if(a ∈FOLLOW(A))用A→?推导 else 语法错误 预测分析程序或LL(1)分析法: 总控程序 分析表 M[A,a]矩阵,A ? VN ,a ? VT 是终结符或‘#’, 分析栈 STACK 用于存放文法符号 第六十二页,共九十三页。 总控程序 分析表 X ? # 输入串 分析栈 STACK a1a2...ai…# 预测分析程序的工作图 # S a1a2...ai…# 分析开始时: 输出流 第六十三页,共九十三页。 总控程序根据现行栈顶符号X和当前输入符号a,执行下列三种动作之一: 1. 若X=a=‘#’,则宣布分析成功,停止分析。 2. 若X=a ?‘#’,则把X从STACK栈顶逐出,让a指向下一个输入符号。 匹配成功 第六十四页,共九十三页。 3. 若X是一个非终结符,则查看分析表M。 若M[X,a]中存放着关于X的一个产生式,把X逐出STACK栈顶,把产生式的右部符号串按反序一一推进STACK栈(若右部符号为?,则意味不推什么东西进栈)。在把产生式的右部符号推进栈的同时应做这个产生式相应的语义动作。 若M[X,a]中存放着“出错标志”,则调用出错诊察程序ERROR。 推导 第六十五页,共九十三页。
原创力文档

文档评论(0)