主要内容: LR(1)分析方法
主要内容: LR(1)分析方法
Z→E E E→>(L,E) E→(L,E) E→S →(L,E) E→S s→)id s→(°S) s→·(S) →°L,E L→LE °E L→E E→>°(L,E E→·S s→id S→id s→s) s→(S) s T1(S2,))=(Shift, Reduce3] E→S s-(S°)
Z → E E → (L,E) E → S L → L,E L → E S → id S → (S) Z → •E E→•(L,E) E→•S S→•id S→ •(S) 0 E→(•L,E) S→(•S) L→•L,E L→•E E→•(L,E) E→•S S→•id S→•(S) 1 E→S• S→(S•) 2 ( S 1 (S2 , ) ) = {Shift, Reduce3}
CLR(O)方法不依赖输入流,直接判定归约, 容易出现冲突。 SLR(1)方法简单的把非终极符的 follow集做 为可归约的依据,并不精确。 个非终极符在不同的位置上出现,它所允 许的后继符是不同的。LR(1)针对不同产生 式上的非终极符,分别定义其后继符集(展 望符集 Reduce lookup),减少了移入/归约 冲突
LR(0)方法不依赖输入流,直接判定归约, 容易出现冲突。 SLR(1)方法简单的把非终极符的follow集做 为可归约的依据,并不精确。 一个非终极符在不同的位置上出现,它所允 许的后继符是不同的。LR(1)针对不同产生 式上的非终极符,分别定义其后继符集(展 望符集Reducelookup),减少了移入/归约 冲突
LR(1)分析方法 LR(1)方法研究的对象是二元组:(oa,b), 其中a是活前缀,而b是一个输入符号。我 们称上述(α,b)为LR前缀模式。 如果α是文法的归约活前缀,b是a的合法后 继续符,则称(α,b)为LR归约前缀模式
LR(1)分析方法 ◼ LR(1)方法研究的对象是二元组:( , b), 其中是活前缀,而b是一个输入符号。我 们称上述( , b)为LR1前缀模式。 ◼ 如果是文法的归约活前缀,b是的合法后 继续符,则称( , b)为LR1归约前缀模式
LR归约前缀的派生定理 假设a是拓广产生式的右部,#是输入流 的结束符,则有 (α[p],#)是LR归约前缀模式 1设(αAβ[p],b)是LR归约前缀模式, LR归约前缀模式,其中a∈ First(z设 且A→π是q产生式,则(aπ[q],a)也
LR1归约前缀的派生定理 ◼ 假设0是拓广产生式的右部,#是输入流 的结束符,则有: ( 0 [p], # )是LR1归约前缀模式。 ◼ 设( A[p], b )是LR1归约前缀模式, 且A→是q产生式,则([q] , a)也是 LR1归约前缀模式,其中aFirst(b)