最左归约:a bb cde=)aAbcde=)aAcde=〉aAcBe=>S e d S->aAcBe A->Ab A->b B->d 分析树 输入串:abbcde
S a A c B e A b d b 分 析 树 最左归约: => aAcBe => S a b b c d e => aAbcde => aAcde S->aAcBe 输入串:abbcde A->Ab A->b B->d
规范推导:即最右推导, 规范句型:由规范推导所得的句型称为规范 包型, 规范归约:是关于句型心的一个最右推导的 逆过程,也称最左归约
规范推导:即最右推导; 规范句型:由规范推导所得的句型称为规范 句型; 规范归约:是关于句型α的一个最右推导的 逆过程,也称最左归约
E 例6.2文法6 E一>TIE+T T->FT*F F->i(E) 的一个句型11*12+i3 ●短语: i1,i2,i3 i1*i2,i*i2tis ●直接短语:i1,12,i3 ●句柄:i 语 法树
例6.2 文法G E — > T | E +T T — > F | T * F F — > i | (E ) 的一个句型 i 1*i 2+i 3 语 法 树 TF E E F F + T * i i i T TF E E F F + T * i1 i2 i3 T i1 , i2 , i3 , i 1*i2 , i 1*i 2+i 3 i1 , i2 , i3 i1 ⚫短语 : ⚫直接短语 : ⚫句柄:
3将号栈的使用 规范归约用来作语法分析鼎要解决的问题8 ①如何在句型中找出句柄? ②在相同的右部有不止一个产生式时,选哪一个? ①实现移进-归约分析的一个方便途径是用一个栈和一个输 入缓冲区,用#表示栈底和输入的结束 栈 输入 # W
3 符号栈的使用 规范归约用来作语法分析需要解决的问题: ①如何在句型中找出句柄? ②在相同的右部有不止一个产生式时,选哪一个? ①实现移进-归约分析的一个方便途径是用一个栈和一个输 入缓冲区,用#表示栈底和输入的结束 栈 输 入 # w#
②分析程序的动作 ●移进:下一输入符号移进栈顶 。归约:把句柄按产生式的右部进行归约 ●接收:分析程序报告成功 ●出错:发现了一个语法错,调用出错处理程序 注意8可归约的串在浅顶不会在内部
② 分析程序的动作 ⚫移进: 下一输入符号移进栈顶 ⚫归约: 把句柄按产生式的右部进行归约 ⚫接收: 分析程序报告成功 ⚫出错: 发现了一个语法错,调用出错处理程序 注意: 可归约的串在栈顶,不会在内部