LR(0)-elemző SLR(1)-elemző LR(1)-elemző LALR(1)-elemző ----------------------------- LR(0)-elemző LR(0)-elem A -> bCdE [A -> .bCdE] [A -> b.CdE] [A -> bC.dE] [A -> bCd.E] [A -> bCdE.] A -> eps [A -> .] S' -> S S -> nScS | eps H0= closure({[S'->.S]}) = { [S'->.S], [S->.nScS],[S->.] } H1= read(H0, S) = [S'->S.] H2= read(H0, n) = [S->n.ScS], [S->.nScS], [S->.] H3= read(H2, S) = [S->nS.cS] H2= read(H2, n) = [S->n.ScS], [S->.nScS], [S->.] H4= read(H3, c) = [S->nSc.S], [S->.nScS], [S->.] H5= read(H4, S) = [S->nScS.] H2= read(H4, n) = [S->n.ScS], [S->.nScS], [S->.] action ----goto---- S n c 0 léptet 1 2 1 redukál(S'->S) 2 léptet/redukál(S->eps) 3 2 3 léptet 4 4 léptet/redukál(S->eps) 5 2 5 redukál(S->nScS) SLR(1) ------ FIRST FOLLOW S' S | n # | # S n | n c S',S | c# H1= read(H0, S) = [S'->S.] H2= read(H0, n) = [S->n.ScS], [S->.nScS], [S->.] H3= read(H2, S) = [S->nS.cS] H2= read(H2, n) = [S->n.ScS], [S->.nScS], [S->.] H4= read(H3, c) = [S->nSc.S], [S->.nScS], [S->.] H5= read(H4, S) = [S->nScS.] H2= read(H4, n) = [S->n.ScS], [S->.nScS], [S->.] mj.: itt X == epszilon ----action---------------- --goto--- n c # S 0 lép2 lép1 1 accept 2 lép2 r(S->X) r(S->X) lép3 3 lép4 4 lép2 r(S->X) r(S->X) lép5 5 r(S->nScS) r(S->nScS) nnccnc# (#0, nnccnc#) -> 0/n: lep2 (#0n2, nccnc#) -> 2/n: lep2 (#0n2n2, ccnc#) -> 2/c: r(S->X) (#0n2n2S3, ccnc#) -> 3/c: lep4 (#0n2n2S3c4, cnc#) -> 4/c: r(S->X) (#0n2n2S3c4S5, cnc#) -> 5/c: r(S->nScS) (#0n2S3, cnc#) -> LR(1) ----- LR(1)-elem A -> daBS [A -> da.BS, a] [A -> da.BS, #] előreolvasási szimbólum S-> apS | ap H0= closure([S'->.S,#]) = [S'->.S,#], [S->.apS,#], [S->.ap,#] H1= read(H0,S)=[S'->S.,#] H2= read(H0,a)=[S->a.pS,#], [S->a.p,#] H3= read(H2,p)=[S->ap.S,#], [S->ap.,#] [S->.apS,#], [S->.ap,#] H4= read(H3,S)=[S->apS.,#] H2= read(H3,a)=[S->a.pS,#], [S->a.p,#] S -> aSB | b B -> f | g H0= closure([S'->.S,#]) = [S'->.S,#],[S->.aSB,#],[S->.b,#] H1= read(H0,S)=[S'->S.,#] H2= read(H0,a)= [S->a.SB,#], [S->.aSB,f],[S->.b,f] [S->.aSB,g],[S->.b,g] = [S->a.SB,#] [S->.aSB,f/g],[S->.b,f/g] H3= read(H0,b)=[S->b.,#] H4= read(H2,S)=[S->aS.B,#],[B->.f,#],[B->.g,#] H5= read(H2,a)=[S->a.SB,f/g],[S->.aSB,f/g],[S->.b,f/g] H6= read(H2,b)=[S->b.,f/g] H7= read(H4,B)=[S->aSB.,#] H8= read(H4,f)=[B->f.,#] H9= read(H4,g)=[B->g.,#] H10=read(H5,S)=[S->aS.B,f/g],[B->.f,f/g],[B->.g,f/g] H5= read(H5,a)=[S->a.SB,f/g],[S->.aSB,f/g],[S->.b,f/g] H6= read(H5,b)=[S->b.,f/g] H11=read(H10,B)=[S->aSB.,f/g] H12=read(H10,f)=[B->f.,f/g] H13=read(H10,g)=[B->g.,f/g] ---------------action------------ --goto--- a b f g # S B 0 s2 s3 lép1 1 accept 2 s5 s6 4 3 r(S->b) 4 s8 s9 7 5 s5 s6 s10 6 r(S->b) r(S->b) 7 r(S->aSB) 8 r(B->f) 9 r(B->g) 10 s12 s13 11 11 r(S->aSB)r(S->aSB) 12 r(B->f) r(B->f) 13 r(B->g) r(B->g) LALR(1) ------- K3/6 = [S->b.,#/f/g] K3/6 = read(K0,b) ---------------action------------ --goto--- a b f g # S B 0 s2/5 s3/6 lép1 1 accept 2/5 s2/5 s3/6 4/10 3/6 r(S->b) r(S->b) r(S->b) 4/10 s8/12 s9/13 7/11 7/11 r(S->aSB)r(S->aSB) r(S->aSB) 8/12 r(B->f) r(B->f) r(B->f) 9/13 r(B->g) r(B->g) r(B->g)