LL1 (1131543), страница 2
Текст из файла (страница 2)
ÄÄÄÄÄÄÅÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÅÄÄÄÄÄÅÄÄÄÄÄÄ
E ³E->TE'³ ³ ³E->TE'³ ³
E' ³ ³E'->+TE'³ ³ ³E'->e³E'->e
T ³T->FT'³ ³ ³T->FT'³ ³
T' ³ ³T'->e ³T'->*FT'³ ³T'->e³T'->e
F ³F->id ³ ³ ³F->(E)³ ³
ÄÄÄÄÄÄÁÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÁÄÄÄÄÄÁÄÄÄÄÄÄÄÄ
�¨á. 3.4
ÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄ
Œ £ §¨ ³ ‚室 ³ ‚ë室
ÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄ
$E ³ id+id*id$ ³
$E'T ³ id+id*id$ ³ E->TE'
$E'T'F ³ id+id*id$ ³ T->FT'
$E'T'id ³ id+id*id$ ³ F->id
$E'T' ³ +id*id$ ³ E
$E' ³ +id*id$ ³ T'->e / \
$E'T+ ³ +id*id$ ³ E'->+TE' / \
$E'T ³ id*id$ ³ T E'
$E'T'F ³ id*id$ ³ T->FT' /| / | \
$E'T'id ³ id*id$ ³ F->id F T' + T E'
$E'T' ³ *id$ ³ | / |
$E'T'F* ³ *id$ ³ T'->*FT' id / |
$E'T'F ³ id$ ³ F T'
$E'T'id ³ id$ ³ F->id | /|\
$E'T' ³ $ ³ id * F T'
$E' ³ $ ³ T'->e |
$ ³ $ ³ E'->e id
ÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄ
�¨á. 3.5 �¨á. 3.6
� ¢å®¤¥ id+id*id ¯à¥¤áª §ë¢ î騩 «¨§ â®à ᮢ¥àè ¥â ¯®á«¥¤®¢ ⥫ì®áâì è £®¢, ¨§®¡à ¦¥ãî à¨á. 3.5. “ª § â¥«ì ¢å®¤ 㪠§ë¢ ¥â á ¬ë© «¥¢ë© ᨬ¢®« ¢ ª®«®ª¥ ‚室. …᫨ ¢¨¬ â¥«ì® ¯à® «¨§¨à®¢ âì ¤¥©áâ¢¨ï «¨§ â®à , â® ¢¨¤®, çâ® ® ®áãé¥á⢫ï¥â «¥¢ë© ¢ë¢®¤, â.¥. ¯à ¢¨« ¯à¨¬¥ïîâáï ¢ ᮮ⢥âá⢨¨ á «¥¢ë¬ ¢ë¢®¤®¬. ‡ 㦥 ¯à®á¬®âà¥ë¬¨ ¢å®¤ë¬¨ ᨬ¢®« ¬¨ á«¥¤ãîâ ᨬ¢®«ë £à ¬¬ ⨪¨ ¢ ¬ £ §¨¥ (ᢥàåã ¢¨§), ç⮠ᮮ⢥âáâ¢ã¥â «¥¢ë¬ á¥â¥æ¨ «ìë¬ ä®à¬ ¬ ¢ë¢®¤ .
„¥à¥¢® à §¡®à ¯à¨¢¥¤¥® à¨á. 3.6.
3.2.2. Œ®¦¥á⢠FIRST ¨ FOLLOW.
�ਠ¯®áâ஥¨¨ ¯à¥¤áª §ë¢ î饣® «¨§ â®à ¯®«¥§ë¬¨ ®ª §ë¢ îâáï ¤¢¥ äãªæ¨¨, á¢ï§ ë¥ á £à ¬¬ ⨪®© G. �⨠äãªæ¨¨, FIRST ¨ FOLLOW, ¯®§¢®«ïîâ ¯®áâநâì â ¡«¨æã ¯à¥¤áª §ë¢ î饣® à §¡®à ¤«ï G, ¥á«¨, ª®¥ç®, íâ® ¢®§¬®¦®. Œ®¦¥á⢠, ¤ ¢ ¥¬ë¥ í⨬¨ äãªæ¨ï¬¨, ¬®£ãâ, ªà®¬¥ ⮣®, ¡ëâì ¨á¯®«ì§®¢ ë ¯à¨ ¢®ááâ ®¢«¥¨¨ ¯®á«¥ ®è¨¡®ª.
…᫨ u - «î¡ ï áâப ᨬ¢®«®¢ £à ¬¬ ⨪¨, ¯®«®¦¨¬ FIRST(u) - ¬®¦¥á⢮ â¥à¬¨ «®¢, á ª®â®àëå ç¨ îâáï áâப¨, ¢ë¢®¤¨¬ë¥ ¨§ u. …᫨ u=>*e, â® e â ª¦¥ ¯à¨ ¤«¥¦¨â FIRST(u).
Ž¯à¥¤¥«¨¬ FOLLOW(A) ¤«ï ¥â¥à¬¨ « A ª ª ¬®¦¥á⢮ â¥à¬¨ «®¢ a, ª®â®àë¥ ¬®£ãâ ¯®ï¢¨âìáï ¥¯®á।á⢥® á¯à ¢ ®â A ¢ ¥ª®â®à®© á¥â¥æ¨ «ì®© ä®à¬¥, â.¥. ¬®¦¥á⢮ â¥à¬¨ «®¢ a â ª¨å, çâ® áãé¥áâ¢ã¥â ¢ë¢®¤ ¢¨¤ S=>*uAav ¤«ï ¥ª®â®àëå u ¨ v. Žâ¬¥â¨¬, çâ® ¬¥¦¤ã A ¨ a ¢ ¯à®æ¥áᥠ¢ë¢®¤ ¬®£ãâ ¯®ï¢¨âìáï ¥â¥à¬¨ «ìë¥ á¨¬¢®«ë, ¨§ ª®â®àëå ¢ë¢®¤¨âáï e. …᫨ A ¬®¦¥â ¡ëâì á ¬ë¬ ¯à ¢ë¬ ᨬ¢®«®¬ ¥ª®â®à®© á¥â¥æ¨ «ì®© ä®à¬ë, â® $ ¯à¨ ¤«¥¦¨â FOLLOW(A).
„«ï ¯®áâ஥¨ï FIRST(X) ¤«ï ¢á¥å ᨬ¢®«®¢ £à ¬¬ ⨪¨ X ¯à¨¬¥¨¬ á«¥¤ãî騩 «£®à¨â¬.
€«£®à¨â¬ 3.2. �®áâ஥¨¥ ¬®¦¥á⢠FIRST ¤«ï ᨬ¢®«®¢ £à ¬¬ ⨪¨.
˜ £ 1. …᫨ X - â¥à¬¨ «, â® FIRST(X) - íâ® {X}; ¥á«¨ X - ¥â¥à¬¨ «, ¯®« £ ¥¬ FIRST(X)={}.
˜ £ 2. …᫨ ¨¬¥¥âáï ¯à ¢¨«® ¢ë¢®¤ X->e, â® ¤®¡ ¢¨âì e ª FIRST(X).
˜ £ 3. �®ª ¨ ª ª ª®¬ã ¬®¦¥áâ¢ã FIRST(X) ¥«ì§ï 㦥 ¡ã¤¥â ¤®¡ ¢¨âì ®¢ë¥ í«¥¬¥âë ¨«¨ e:
¥á«¨ X - ¥â¥à¬¨ « ¨ ¨¬¥¥âáï ¯à ¢¨«® ¢ë¢®¤ X->Y1Y2...Yk, â® ¢ª«îç¨âì a ¢ FIRST(X), ¥á«¨ ¤«ï ¥ª®â®à®£® i a<-FIRST(Yi) ¨ e ¯à¨ ¤«¥¦¨â ¢á¥¬ FIRST(Y1),...,FIRST(Yi-1), â.¥. Y1...Yi-1=>*e. …᫨ e ¯à¨ ¤«¥¦¨â FIRST(Yj) ¤«ï ¢á¥å j=1,2,...,k, â® ¤®¡ ¢¨âì e ª FIRST(X). � ¯à¨¬¥à, ¢á¥, çâ® ¯à¨ ¤«¥¦¨â FIRST(Y1) ¯à¨ ¤«¥¦¨â â ª¦¥ ¨ FIRST(X). …᫨ ¨§ Y1 ¥ ¢ë¢®¤¨âáï e, â® ¨ç¥£® ¡®«ìè¥ ¥ ¤®¡ ¢«ï¥¬ ª FIRST(X), ® ¥á«¨ Y1=>*e, â® ¤®¡ ¢«ï¥¬ FIRST(Y2), ¨ â.¤.
’¥¯¥àì FIRST ¤«ï «î¡®© áâப¨ X1X2...Xn ¬®¦® ¢ëç¨á«¨âì á«¥¤ãî騬 ®¡à §®¬.
˜ £ 1. �®« £ ¥¬ FIRST(X1X2...Xn)={}.
˜ £ 2. „®¡ ¢¨¬ ª FIRST(X1X2...Xn) ¢á¥ ¥ e ᨬ¢®«ë ¨§ FIRST(X1). „®¡ ¢¨¬ â ª¦¥ ¥ e ᨬ¢®«ë ¨§ FIRST(X2), ¥á«¨ e<-FIRST(X1),¥ e ᨬ¢®«ë ¨§ FIRST(X3), ¥á«¨ e ¯à¨ ¤«¥¦¨â ª ª FIRST(X1), â ª ¨ FIRST(X2), ¨ â.¤. � ª®¥æ, ¤®¡ ¢¨¬ e ª FIRST(X1X2...Xn), ¥á«¨ e<-FIRST(Xi) ¤«ï ¢á¥å i.
„«ï ¢ëç¨á«¥¨ï FOLLOW(A) ¤«ï ¥â¥à¬¨ « A ¯à¨¬¥¨¬ «£®à¨â¬ 3.3.
€«£®à¨â¬ 3.3. �®áâ஥¨¥ FOLLOW(X) ¤«ï ¢á¥å X - ¥â¥à¬¨ «®¢ £à ¬¬ ⨪¨.
˜ £ 1. �®«®¦¨âì FOLLOW(X)={}.
˜ £ 2. �®¬¥áâ¨âì $ ¢ FOLLOW(S), £¤¥ S - ç «ìë© á¨¬¢®« ¨ $ - ¯à ¢ë© ª®æ¥¢®© ¬ થà.
˜ £ 3. …᫨ eáâì ¯à ¢¨«® ¢ë¢®¤ A->uBv, â® ¢á¥ ¨§ FIRST(v), § ¨áª«î票¥¬ e, ¤®¡ ¢¨âì ª FOLLOW(B).
˜ £ 4. �®ª ¨ç¥£® ¥«ì§ï ¡ã¤¥â ¤®¡ ¢¨âì ¨ ª ª ª®¬ã ¬®¦¥áâ¢ã FOLLOW(X): e᫨ ¥áâì ¯à ¢¨«® ¢ë¢®¤ A->uB ¨«¨ A->uBv, £¤¥ FIRST(v) ᮤ¥à¦¨â e (â.¥. v=>*e), â® ¢á¥ ¨§ FOLLOW(A) ¤®¡ ¢¨âì ª FOLLOW(B).
�ਬ¥à 3.2. �aáᬮâਬ ᮢ £à ¬¬ ⨪ã (*). „«ï ¥¥
FIRST(E) =FIRST(T)=FIRST(F)={(,id}
FIRST(E')={+,e}
FIRST(T')={*,e}
FOLLOW(E)=FOLLOW(E')={),$}
FOLLOW(T)=FOLLOW(T')={+,),$}
FOLLOW(F)={+,*,),$}
� ¯à¨¬¥à, id ¨ «¥¢ ï ᪮¡ª ¤®¡ ¢«ïîâáï ª FIRST(F) è £¥ 3 ¯à¨ i=1, ¯®áª®«ìªã FIRST(id)={id} ¨ FIRST('(')={'('} ¢ ᮮ⢥âá⢨¨ á è £®¬ 1. � è £¥ 3 ¯à¨ i=1, ¢ ᮮ⢥âá⢨¨ á ¯à ¢¨«®¬ ¢ë¢®¤ T->FT' ª FIRST(T) ¤®¡ ¢«ïîâáï â ª¦¥ id ¨ «¥¢ ï ᪮¡ª . � è £¥ 2 ¢ FIRST(E') ¢ª«îç ¥âáï e.
� è £¥ 1 ¤«ï ¢ëç¨á«¥¨ï ¬®¦¥á⢠FOLLOW ¢ FOLLOW(E) ¢ª«îç ¥¬ $. � è £¥ 2, ¨á¯®«ì§ãï ¯à ¢¨«® ¢ë¢®¤ F->(E), ª FOLLOW(E) ¤®¡ ¢«ï¥âáï â ª¦¥ ¯à ¢ ï ᪮¡ª . � è £¥ 3, ¯à¨¬¥¥®¬ ª ¯à ¢¨«ã E->TE', ¢ FOLLOW(E') ¢ª«îç îâáï $ ¨ ¯à ¢ ï ᪮¡ª . �®áª®«ìªã E'=>*e, ®¨ â ª¦¥ ¯®¯ ¤ îâ ¢ FOLLOW(T). ‚ ᮮ⢥âá⢨¨ á ¯à ¢¨«®¬ ¢ë¢®¤ E->TE', è £¥ 2 ¢ FOLLOW(T) ¢ª«îç ¥âáï ¢á¥ ¨§ FIRST(E'), ®â«¨ç®¥ ®â e.
3.2.3. Š®áâàã¨à®¢ ¨¥ â ¡«¨æ ¯à¥¤áª §ë¢ î饣® «¨§ â®à
„«ï ª®áâàã¨à®¢ ¨ï â ¡«¨æ ¯à¥¤áª §ë¢ î饣® «¨§ â®à ¯® £à ¬¬ ⨪¥ G ¬®¦¥â ¡ëâì ¨á¯®«ì§®¢ «£®à¨â¬, ®á®¢ ë© á«¥¤ãî饩 ¨¤¥¥. �।¯®«®¦¨¬, çâ® A->u - ¯à ¢¨«® ¢ë¢®¤ £à ¬¬ ⨪¨ ¨ a<-FIRTS(u). ’®£¤ «¨§ â®à ¤¥« ¥â à §¢¥àâªã A ¯® u, ¥á«¨ ¢å®¤ë¬ ᨬ¢®«®¬ ï¥âáï a. ’à㤮áâì ¢®§¨ª ¥â, ª®£¤ u=e ¨«¨ u=>*e. ‚ í⮬ á«ãç ¥ 㦮 à §¢¥àãâì A ¢ u, ¥á«¨ ⥪ã騩 ¢å®¤®© ᨬ¢®« ¯à¨ ¤«¥¦¨â FOLLOW(A) ¨«¨ ¥á«¨ ¤®á⨣ãâ $ ¨ $<-FOLLOW(A).
€«£®à¨â¬ 3.4. �®áâ஥¨¥ â ¡«¨æ ¯à¥¤áª §ë¢ î饣® «¨§ â®à .
„«ï ª ¦¤®£® ¯à ¢¨« ¢ë¢®¤ A->u £à ¬¬ ⨪¨ ¢ë¯®«¨âì è £¨ 1 ¨ 2
˜ £ 1. „«ï ª ¦¤®£® â¥à¬¨ « a ¨§ FIRST(u) ¤®¡ ¢¨âì A->u ª M[A,a].
˜ £ 2. …᫨ e<-FIRST(u), ¤®¡ ¢¨âì A->u ª M[A,b] ¤«ï ª ¦¤®£® â¥à¬¨ « b ¨§ FOLLOW(A). …᫨ e<-FIRST(u) ¨ $<-FOLLOW(A), ¤®¡ ¢¨âì A->u ª M[A,$].
˜ £ 3. �®«®¦¨âì ¢á¥ ¥®¯à¥¤¥«¥ë¥ ¢å®¤ë à ¢ë¬¨ error.
�ਬ¥à 3.3. �ਬ¥¨¬ «£®à¨â¬ 3.4 ª £à ¬¬ ⨪¥ (*). �®áª®«ìªã FIRST(TE')=FIRST(T)={(,id}, ¢ ᮮ⢥âá⢨¨ á ¯à ¢¨«®¬ ¢ë¢®¤ E->TE' ¢å®¤ë M[E,(] ¨ M[E,id] áâ ®¢ïâáï à ¢ë¬¨ E->TE'.
‚ ᮮ⢥âá⢨¨ á ¯à ¢¨«®¬ ¢ë¢®¤ E'->+TE' ¢å®¤ M[E',+] à ¢¥ E'->+TE'. ‚ ᮮ⢥âá⢨¨ á ¯à ¢¨«®¬ ¢ë¢®¤ E'->e ¢å®¤ë M[E',)] ¨ M[E',$] à ¢ë E'->e, ¯®áª®«ìªã FOLLOW(E')={),$}.
’ ¡«¨æ «¨§ , ¯®áâ஥ ï «£®à¨â¬®¬ 3.4, ¯à¨¢¥¤¥ à¨á. 3.4.
3.2.4. LL(1)-£à ¬¬ ⨪¨
€«£®à¨â¬ 3.4 ¤«ï ¯®áâ஥¨ï â ¡«¨æë «¨§ M ¬®¦¥â ¡ëâì ¯à¨¬¥¥ ª «î¡®© £à ¬¬ ⨪¥. ޤ ª® ¤«ï ¥ª®â®àëå £à ¬¬ ⨪ M ¬®¦¥â ¨¬¥âì ¥®¤®§ ç® ®¯à¥¤¥«¥ë¥ ¢å®¤ë. � ¯à¨¬¥à, ¥á«¨ £à ¬¬ ⨪ «¥¢®à¥ªãàᨢ ¨«¨ ¥®¤®§ ç , M ¡ã¤¥â ¨¬¥âì ¯® ªà ©¥© ¬¥à¥ ®¤¨ ¥®¤®§ ç® ®¯à¥¤¥«¥ë© ¢å®¤.
ƒà ¬¬ ⨪¨, ¤«ï ª®â®àëå â ¡«¨æë «¨§ ¥ ¨¬¥îâ ¥®¤®§ ç® ®¯à¥¤¥«¥ëå ¢å®¤®¢, §ë¢ îâáï LL(1). �¥à¢®¥ L ®§ ç ¥â ᪠¨à®¢ ¨¥ ¢å®¤ á«¥¢ - ¯à ¢®, ¢â®à®¥ L ®§ ç ¥â, çâ® áâநâáï «¥¢ë© ¢ë¢®¤, 1 - çâ® ª ¦¤®¬ è £¥ ¤«ï ¯à¨ïâ¨ï à¥è¥¨ï ¨á¯®«ì§ã¥âáï ®¤¨ ᨬ¢®« ¥¯à®á¬®â८© 楯®çª¨. Œ®¦® ¯®ª § âì, çâ® «£®à¨â¬ 3.4 ¤«ï ª ¦¤®© LL(1)-£à ¬¬ ⨪¨ G áâநâ â ¡«¨æë, ¯® ª®â®àë¬ à ᯮ§ îâáï ¢á¥ æ¥¯®çª¨ ¨§ L(G) ¨ ⮫쪮 ®¨.
LL(1)-£à ¬¬ ⨪¨ ¨¬¥î⠥᪮«ìª® ®â«¨ç¨â¥«ìëå ᢮©áâ¢. �¥®¤®§ ç ï ¨«¨ «¥¢®à¥ªãàᨢ ï £à ¬¬ ⨪ ¥ ¬®¦¥â ¡ëâì LL(1). Œ®¦® â ª¦¥ ¯®ª § âì, çâ® £à ¬¬ ⨪ G ï¥âáï LL(1) ⮣¤ ¨ ⮫쪮 ⮣¤ , ª®£¤ ¤«ï ¤¢ãå ¯à ¢¨« ¢¨¤ A->u|v ¢ë¯®«ï¥âáï á«¥¤ãî饥:
1) ¨ ¤«ï ª ª®£® â¥à¬¨ « a ®¤®¢à¥¬¥® ¨§ u ¨ v ¥ ¢ë¢®¤ïâáï áâப¨, ç¨ î騥áï á a;
2) ⮫쪮 ¨§ ®¤®© ¨§ áâப u ¨«¨ v ¬®¦¥â ¢ë¢®¤¨âìáï ¯ãáâ ï áâப ;
3) ¥á«¨ v=>*e, â® ¨§ u ¥ ¢ë¢®¤¨âáï ¨ª ª ï áâப , ç¨ îé ïáï á â¥à¬¨ « ¨§ FOLLOW(A).
�ª¢¨¢ «¥âë¬ ï¢«ï¥âáï á«¥¤ãî饥 ®¯à¥¤¥«¥¨¥:
Š‘-£à ¬¬ ⨪ §ë¢ ¥âáï LL(1)-£à ¬¬ ⨪®©, ¥á«¨ ¨§ áãé¥á⢮¢ ¨ï ¤¢ãå «¥¢ëå ¢ë¢®¤®¢
(1) S =>* w A u => w v u =>* wx,
(2) S =>* w A u => w z u =>* wy,
¤«ï ª®â®àëå FIRST(x)=FIRST(y), ¢ë⥪ ¥â, çâ® v=z. �â® ®§ ç ¥â, çâ® ¤«ï ¤ ®© 楯®çª¨ wAu ¨ ¯¥à¢®£® ᨬ¢®« , ¢ë¢®¤ï饣®áï ¨§ Au (¨«¨ $), áãé¥áâ¢ã¥â ¥ ¡®«¥¥ ®¤®£® ¯à ¢¨« , ª®â®à®¥ ¬®¦¥â ¡ëâì ¯à¨¬¥¥® ª A, çâ®¡ë ¯®«ãç¨âì ¢ë¢®¤ ª ª®©-¨¡ã¤ì â¥à¬¨ «ì®© 楯®çª¨, ç¨ î饩áï á w ¨ ¯à®¤®«¦ î饩áï í⨬ ¯¥à¢ë¬ ᨬ¢®«®¬.
Ÿ§ëª, ¤«ï ª®â®à®£® ¬®¦® ¯®áâநâì LL(1)-£à ¬¬ ⨪ã, §ë¢ îâ LL(1)-ï§ëª®¬.
…᫨ â ¡«¨æ «¨§ ¨¬¥¥â ¥®¤®§ ç® ®¯à¥¤¥«¥ë¥ ¢å®¤ë, â® £à ¬¬ ⨪ ¥ ï¥âáï LL(1). �ਬ¥à®¬ ¬®¦¥â á«ã¦¨âì á«¥¤ãîé ï £à ¬¬ ⨪ :
St -> if Ex then St
| if Ex then St else St
| Cont
Ex -> ...
�â £à ¬¬ ⨪ ¥®¤®§ ç , çâ® ¨««îáâà¨àã¥âáï à¨á. 3.7. �®áª®«ìªã £à ¬¬ ⨪ ¥®¤®§ ç , ® ¥ ï¥âáï LL(1). �஡«¥¬ , ¯®à®¦¤ ¥â «¨ £à ¬¬ ⨪ LL-ï§ëª, «£®à¨â¬¨ç¥áª¨ ¥à §à¥è¨¬ .
St St
/|\ /| \
/ | \ / | \
/ St \ / St ...
/ / \ \ / / \ \
/ / \ \ / / \ \
if E then if E then S else S if E then if E then S else S















