例:文法 S→E E→→E+T|T T→T*FF F→(E)|i
例: 文法 S’→E E→E+T│T T→T*F│F F→(E)│i
Lo= closure({S→·S}) S→>E,E→>·E+T,E→>·T,T>·T*,T→>●F,F→>·(E,F→>·i go(o, E) S>E●,E>E●+T 移进归约冲突 Logo(o,T) E→I·T→>IF 移进归约冲突 13-go(o, F) T→F● I4=go(l0() F→>(·E),E→>·E+T,E→>·T,T->·T*F,T→>·F,F→>·(E),F→>·1 Is=go(lo, 1)
I0=closure({S’→•S}) S’→•E, E→•E+T, E→•T, T→•T*F, T→•F, F→•(E), F →•i I1=go(I0 ,E) S’→E•, E→E•+T 移进-归约冲突 I2=go(I0 ,T) E→T•, T→T•*F 移进-归约冲突 I3=go(I0 ,F) T→F• I4=go(I0 ,( ) F→(•E), E→•E+T, E→•T, T→•T*F, T→•F, F→•(E), F →•i I5=go(I0 ,i) F →i•
6=go(l1,+) E→>E+·T,T→>·T*F,T→>●F,F>(E),F>i T→>T*●F,F→>(E),F→>·1 (4E) F→>(E·),E→>E·+T I9=go(6,T) E→>E+T●.T→xT●*F 移进-归约冲突 Lo=go(I, F) TT*F● 11go(l8,)) F→>(E)°
I6=go(I1 ,+) E→E+•T, T→•T*F, T→•F, F→•(E), F →•i I7=go(I2 ,*) T→T*•F, F→•(E), F →•i I8=go(I4 ,E) F→(E•), E→E•+T I9=go(I6 ,T) E→E+T•, T→T•*F 移进-归约冲突 I10=go(I7 ,F) T→T*F• I11=go(I8 ,) ) F→(E)•
四.SLR分析表的构造 1.SLR方法 当某个项目集形如 L={X>abB,A→a°,B→B時}时,出现了移进归 约冲突和归约归约冲突,可用如下方法解决,该 方法称为SLR方法
四. SLR分析表的构造 1. SLR方法 当某个项目集形如 I={X→•b, A→•, B→•}时, 出现了移进-归 约冲突和归约-归约冲突, 可用如下方法解决, 该 方法称为SLR方法
a是当前输入符号, 当{b}∩ FOLLOW(A)∩ FOLLOW(B)=Φ时 (1)a-b,则移进输入符a; (2)a∈ FOLLOW(A则用A→约, (3)a∈ FOLLOW(B,则用B→O归约 (4)此外出错
a是当前输入符号, 当{b}FOLLOW(A) FOLLOW(B)=Φ时 (1)a=b, 则移进输入符a; (2)aFOLLOW(A), 则用A→α归约; (3)aFOLLOW(B), 则用B→α归约; (4)此外出错