ACTION GOTO a b d#SAB S2 012345678 acc S4 S5 S6 n2 n2n2n2 n2 n2 S8 r3 r3 r3 r3 S9 [4 4 [4 4r4r4 r 1r1 r
ACTION GOTO a c e b d # S A B 0 S2 1 1 acc 2 S4 3 3 S5 S6 4 r2 r2 r2 r2 r2 r2 5 S8 7 6 r3 r3 r3 r3 r3 r3 7 S9 8 r4 r4 r4 r4 r4 r4 9 r1 r1 r1 r1 r1 r1
LR分析算法 置jp指向输入串w的第一个符号 令S为栈顶状态 a是p指向的符号 重复 begin if ACtioNS, a=s then begin PUSH j, a(进栈) ip前进(指向下一输入符号) else if ACTION[S, a]千1(第j条产生式为A>B)
LR分析算法 置ip指向输入串w的第一个符号 – 令S为栈顶状态 – a是ip指向的符号 – 重复 begin – if ACTION[S,a]=Sj – then begin PUSH j,a(进栈) – ip 前进(指向下一输入符号) – end – else if ACTION[S,a]=rj (第j条产生式为A→)
LR分析程序多 > then begin pop|l项 令当前栈顶状态为S push gOto[S,A]和A(进栈) >> end )else ifACTION[s, a]=acc then return(成功) else error end重复
LR分析程序 » then begin pop || 项 令当前栈顶状态为S’ push GOTO[S’,A]和A(进栈) » end » else if ACTION[s,a]=acc then return (成功) else error – end.重复
之之LR分析程序 例 G[S]:S→> aacbe[l A→>b[2] A→>Ab[3] B→>d[4] w=abbcde#t
LR分析程序 例: – G[S]: S →a A c B e [1] – A →b[2] – A →Ab[3] – B →d[4] w=abbcde#
Step states. Svms. The rest of input action goto 0 abbcde# 2 202#a bede# 3024#ab bcde# r2 goto(2, A) 4023#aA 5 0236 #aAb cde# r3 6023#aA 7 0235 #aac de# 58 802358# aacd e# 02357#aAcB 10023579# aAcBe# rI 1101#S acc
Step states. Syms. The rest of input action goto 1 0 # abbcde# s2 2 02 #a bbcde# s4 3 024 #ab bcde# r2 goto(2,A) 4 023 #aA s6 5 0236 #aAb cde# r3 6 023 #aA s5 7 0235 #aAc de# s8 8 02358 #aAcd e# r4 9 02357 #aAcB s9 10 023579 #aAcBe # r1 11 01 #S acc