LL1 (1131543), страница 3
Текст из файла (страница 3)
) ¡)
�¨á. 3.7
3.2.5. “¤ «¥¨¥ «¥¢®© ४ãàᨨ
Žá®¢ ï âà㤮áâì ¯à¨ ¨á¯®«ì§®¢ ¨¨ ¯à¥¤áª §ë¢ î饣® «¨§ - íâ® ¯¨á ¨¥ â ª®© £à ¬¬ ⨪¨ ¤«ï ¢å®¤®£® ï§ëª , çâ®¡ë ¯® ¥© ¬®¦® ¡ë«® ¯®áâநâì ¯à¥¤áª §ë¢ î騩 «¨§ â®à. ˆ®£¤ á ¯®¬®éìî ¥ª®â®àëå ¯à®áâëå ¯à¥®¡à §®¢ ¨© ¥ LL(1)-£à ¬¬ ⨪㠬®¦® ¯à¨¢¥á⨠ª LL(1)-¢¨¤ã. ‘।¨ íâ¨å ¯à¥®¡à §®¢ ¨© ¨¡®«¥¥ ®ç¥¢¨¤ë¬¨ ïîâáï «¥¢ ï ä ªâ®à¨§ æ¨ï ¨ 㤠«¥¨¥ «¥¢®© ४ãàᨨ. ‡¤¥áì ¥®¡å®¤¨¬® ᤥ« âì ¤¢ § ¬¥ç ¨ï. ‚®-¯¥à¢ëå, ¥ ¢áïª ï £à ¬¬ ⨪ ¯®á«¥ íâ¨å ¯à¥®¡à §®¢ ¨© áâ ®¢¨âáï LL(1) ¨, ¢®-¢â®àëå, ¯®á«¥ 㤠«¥¨ï «¥¢®© ४ãàᨨ ¨ «¥¢®© ä ªâ®à¨§ 樨 ¯®«ãç îé ïáï £à ¬¬ ⨪ ¬®¦¥â áâ âì âà㤮 ¯®¨¬ ¥¬®©.
ƒà ¬¬ ⨪ «¥¢®à¥ªãàᨢ , ¥á«¨ ¢ ¥© ¨¬¥¥âáï ¥â¥à¬¨ « A â ª®©, çâ® áãé¥áâ¢ã¥â ¢ë¢®¤ A=>+Au ¤«ï ¥ª®â®à®© áâப¨ u. ‹¥¢®à¥ªãàá¨¢ë¥ £à ¬¬ ⨪¨ ¥ ¬®£ãâ «¨§¨à®¢ âìáï ¬¥â®¤ ¬¨ ᢥàåã-¢¨§, ¯®í⮬㠥®¡å®¤¨¬® 㤠«¥¨¥ «¥¢®© ४ãàᨨ.
�¥¯®á।á⢥ãî «¥¢ãî ४ãàá¨î, â.¥. ४ãàá¨î ¢¨¤ A->Au, ¬®¦® 㤠«¨âì á«¥¤ãî騬 ᯮᮡ®¬. ‘ ç « £à㯯¨à㥬 A-¯à ¢¨« :
A -> Au1 | Au2 | ... | Aum | v1 | v2 | .... | vn
£¤¥ ¨ª ª ï ¨§ áâப vi ¥ ç¨ ¥âáï á A. ‡ ⥬ § ¬¥ï¥¬ A-¯à ¢¨«
A -> v1A' | v2A' | .... | vnA'
A'-> u1A' | u2A' | .... | umA' | e
�¥â¥à¬¨ « A ¯®à®¦¤ ¥â ⥠¦¥ áâப¨, çâ® ¨ à ìè¥, ® ⥯¥àì ¥â «¥¢®© ४ãàᨨ. ‘ ¯®¬®éìî í⮩ ¯à®æ¥¤ãàë 㤠«ïîâáï ¢á¥ ¥¯®á।áâ¢¥ë¥ «¥¢ë¥ ४ãàᨨ, ® ¥ 㤠«ï¥âáï «¥¢ ï ४ãàá¨ï, ¢ª«îç îé ï ¤¢ ¨«¨ ¡®«¥¥ è £®¢. �ਢ¥¤¥ë© ¨¦¥ «£®à¨â¬ 3.5 ¯®§¢®«ï¥â 㤠«¨âì ¢á¥ «¥¢ë¥ ४ãàᨨ ¨§ £à ¬¬ ⨪¨.
€«£®à¨â¬ 3.5. “¤ «¥¨¥ «¥¢®© ४ãàᨨ.
˜ £ 1. “¯®à冷稢 ¥¬ ¥â¥à¬¨ «ë ¢ ¯à®¨§¢®«ì®¬ ¯®à浪¥.
˜ £ 2. for i:=1 to n do
for j:=1 to i-1 do
¯ãáâì Aj->v1 | v2 | ... | vk - ¢á¥ ⥪ã騥 ¯à ¢¨«
¤«ï Aj;
§ ¬¥¨âì ¢á¥ ¯à ¢¨« ¢¨¤ Ai->Aju ¯à ¢¨«
Ai->v1u | v2u | ... | vkU;
end;
㤠«¨âì ¥¯®á।á⢥ãî «¥¢ãî ४ãàá¨î ¢ ¯à ¢¨« å
¤«ï Ai;
end
�®á«¥ (i-1)-© ¨â¥à 樨 ¢¥è¥£® 横« è £¥ 2 ¤«ï «î¡®£® ¯à ¢¨« ¢¨¤ Ak->Alu, £¤¥ k<i, ¢ë¯®«ï¥âáï l>k. ‚ १ã«ìâ ⥠᫥¤ãî饩 ¨â¥à 樨 (¯® i) ¢ãâ२© 横« (¯® j) ¯®á«¥¤®¢ â¥«ì® ã¢¥«¨ç¨¢ ¥â ¨¦îî £à ¨æã ¯® m ¢ «î¡®¬ ¯à ¢¨«¥ Ai->Amu, ¯®ª ¥ ¡ã¤¥â m>=i. ‡ ⥬, 㤠«ïï ¥¯®á।á⢥ãî «¥¢ãî ४ãàá¨î ¤«ï Ai-¯à ¢¨«, ¤¥« ¥¬ m ¡®«ìè¥ i.
€«£®à¨â¬ 3.5 ¯à¨¬¥¨¬, ¥á«¨ £à ¬¬ ⨪ ¥ ¨¬¥¥â 横«®¢ (¢ë¢®¤®¢ ¢¨¤ A=>+A) ¨ e-¯à ¢¨« (¯à ¢¨« ¢¨¤ A->e). Š ª 横«ë, â ª ¨ e-¯à ¢¨« ¬®£ãâ ¡ëâì 㤠«¥ë ¯à¥¤¢ à¨â¥«ì®. �®«ãç îé ïáï £à ¬¬ ⨪ ¡¥§ «¥¢®© ४ãàᨨ ¬®¦¥â ¨¬¥âì e-¯à ¢¨« .
3.2.6. ‹¥¢ ï ä ªâ®à¨§ æ¨ï
Oᮢ ï ¨¤¥ï «¥¢®© ä ªâ®à¨§ 樨 ¢ ⮬, çâ®, ª®£¤ ¥ïá®, ª ªãî ¨§ ¤¢ãå «ìâ¥à ⨢ ¤® ¨á¯®«ì§®¢ âì ¤«ï à §¢¥à⪨ ¥â¥à¬¨ « A, 㦮 ¯¥à¥¤¥« âì A-¯à ¢¨« â ª, çâ®¡ë ®â«®¦¨âì à¥è¥¨¥ ¤® â¥å ¯®à, ¯®ª ¥ ¡ã¤¥â ¤®áâ®ç® ¨ä®à¬ 樨, çâ®¡ë ¯à¨ïâì ¯à ¢¨«ì®¥ à¥è¥¨¥.
…᫨ A->uv1 | uv2 - ¤¢ A-¯à ¢¨« ¨ ¢å®¤ ï áâப ç¨ ¥âáï á ¥¯ãá⮩ áâப¨, ¢ë¢®¤¨¬®© ¨§ u, ¬ë ¥ § ¥¬, à §¢®à 稢 âì «¨ ¯® uv1 ¨«¨ ¯® uv2. ޤ ª® ¬®¦® ®â«®¦¨âì à¥è¥¨¥, à §¢¥à㢠A->uA'. ’®£¤ ¯®á«¥ «¨§ ⮣®, çâ® ¢ë¢®¤¨¬® ¨§ u, ¬®¦® à §¢¥àãâì A'->v1 ¨«¨ A'->v2. ‹¥¢®ä ªâ®à¨§®¢ ë¥ ¯à ¢¨« ¯à¨¨¬ îâ ¢¨¤
A -> u A'
A' -> v1 | v2
€«£®à¨â¬ 3.6. ‹¥¢ ï ä ªâ®à¨§ æ¨ï £à ¬¬ ⨪¨.
„«ï ª ¦¤®£® ¥â¥à¬¨ « A ¨é¥¬ á ¬ë© ¤«¨ë© ¯à¥ä¨ªá u, ®¡é¨© ¤«ï ¤¢ãå ¨«¨ ¡®«¥¥ ¥£® «ìâ¥à ⨢. …᫨ u#e, â.¥. áãé¥áâ¢ã¥â ¥âਢ¨ «ìë© ®¡é¨© ¯à¥ä¨ªá, § ¬¥ï¥¬ ¢á¥ A-¯à ¢¨« A->uv1 | uv2 | ... | uvn | z, £¤¥ z - ¢á¥ «ìâ¥à ⨢ë, ¥ ç¨ î騥áï á u,
A -> uA' | z
A' -> v1 | v2 | ... | vn
‡¤¥áì A' - ®¢ë© ¥â¥à¬¨ «. �®¢â®à® ¯à¨¬¥ï¥¬ íâ® ¯à¥®¡à §®¢ ¨¥, ¯®ª ¨ª ª¨¥ ¤¢¥ «ìâ¥à â¨¢ë ¥ ¡ã¤ãâ ¨¬¥âì ®¡é¥£® ¯à¥ä¨ªá .
�ਬ¥à 3.4. � áᬮâਬ ¢®¢ì £à ¬¬ ⨪ã ãá«®¢ëå ®¯¥à â®à®¢:
St -> if Ex then St
| if Ex then St else St
| Cont
Ex -> ...
�®á«¥ «¥¢®© ä ªâ®à¨§ 樨 £à ¬¬ ⨪ ¯à¨¨¬ ¥â ¢¨¤
St -> if Ex then St St'
| Cont
St' -> else St | e
Ex -> ...
Š á®¦ «¥¨î, £à ¬¬ ⨪ ®áâ ¥âáï ¥®¤®§ 箩, § ç¨â, ¨ ¥ LL(1), çâ® ¨««îáâà¨àã¥âáï à¨á. 3.8.
St
/ | \
/ | \ St
/ St St' / | \
/ / \\ / | \
/ / \ \ / St St'
/ / \ St' / / | \ \
/ / \ | / / | \ \
if E then if E then S else S if E then if E then S S' else S
) ¡)
�¨á. 3.8
3.2.7. �¥ªãàá¨¢ë© á¯ãáª
‚ëè¥ ¡ë« à áᬮâॠ⠡«¨ç®-ã¯à ¢«ï¥¬ë© ¢ ਠ⠯।᪠§ë¢ î饣® «¨§ , ª®£¤ ¬ £ §¨  ¨á¯®«ì§®¢ «áï ¢ ¯à®æ¥áá¥ à ¡®âë «¨§ â®à . Œ®¦® ¯à¥¤«®¦¨âì ¤à㣮© ¢ ਠ⠯।᪠§ë¢ î饣® «¨§ âà , ª®£¤ ª ¦¤®¬ã ¥â¥à¬¨ «ã ᮯ®áâ ¢«ï¥âáï, ¢®®¡é¥ £®¢®àï, ४ãàᨢ ï ¯à®æ¥¤ãà ¨ ¬ £ §¨ ®¡à §ã¥âáï ¥ï¢® ¯à¨ ¢ë§®¢ å íâ¨å ¯à®æ¥¤ãà. �à®æ¥¤ãàë ४ãàᨢ®£® á¯ã᪠¬®£ãâ ¡ëâì § ¯¨á ë, ª ª íâ® ¨§®¡à ¦¥® à¨á. 3.9. ‚ ¯à®æ¥¤ãॠN ¤«ï á«ãç ï, ª®£¤ ¨¬¥¥âáï «ìâ¥à ⨢ N->ui->*e (¥ ¬®¦¥â ¡ëâì ¡®«¥¥ ®¤®© «ìâ¥à ⨢ë, ¨§ ª®â®à®© ¢ë¢®¤¨âáï e!), ¯à¨¢¥¤¥ë ¤¢ ¢ ਠâ 1.1 ¨ 1.2. ‚ ¢ ਠ⥠1.1 ¤¥« ¥âáï ¯à®¢¥àª , ¯à¨ ¤«¥¦¨â «¨ á«¥¤ãî騩 ¢å®¤®© ᨬ¢®« FOLLOW(N). …᫨ ¥â - ¢ë¤ ¥âáï ®è¨¡ª . ‚® ¢â®à®¬ ¢ ਠ⥠í⮣® ¥ ¤¥« ¥âáï, â ª çâ® «¨§ ®è¨¡ª¨ ®âª« ¤ë¢ ¥âáï ¯à®æ¥¤ãàã, ¢ë§¢ ¢èãî N.
procedure N;{N -> u1 | u2 | ... | uk}
begin if InSym<-FIRST(ui) {⮫쪮 ®¤®¬ã!}
then if parse(ui)
then exit(N->ui)
else error()
end
else
‚ ਠâ 1: ¥á«¨ ¨¬¥¥âáï ¯à ¢¨«® N->ui =>* e â®
‚ ਠâ 1.1 : if InSym<-FOLLOW(N)
then exit(N->e)
else error()
end;
‚ ਠâ 1.2: exit(N->e)
‚ ਠâ 2: ¥â ¯à ¢¨« N->ui =>*e
error()
end end;
procedure parse(u);
{¨§ u ¥ ¢ë¢®¤¨âáï e!}
begin v:=u;
while v#e do
{v=Xz}
if X-â¥à¬¨ « a
then if InSym<>a
then return(false)
end
else {X-¥â¥à¬¨ « B}
B;
end;
v:=z
end;
return(true)
end;
�¨á. 3.9
3.2.8. „¨ £à ¬¬ë ¯¥à¥å®¤®¢ ¤«ï ४ãàᨢ®£® á¯ãáª
Š ª ¯à ¢¨«®, ¥¯®á।á⢥®¥ ¯à®£à ¬¬¨à®¢ ¨¥ ४ãàᨢ®£® á¯ã᪠¨§ £à ¬¬ ⨪¨ ¯à¨¢®¤¨â ª ¡®«ì讬ã ç¨á«ã ¯à®æ¥¤ãà. —¨á«® íâ¨å ¯à®æ¥¤ãà ¬®¦® 㬥ìè¨âì, § ¬¥¨¢ ¢ ¥ª®â®àëå ¯à ¢¨« å ४ãàá¨î 横«®¬. „«ï í⮣® ¬®¦® ¢®á¯®«ì§®¢ âìáï ¤¨ £à ¬¬®© ¯¥à¥å®¤®¢ £à ¬¬ ⨪¨, ª®â®à ï áâநâáï á«¥¤ãî騬 ®¡à §®¬.
�ãáâì ¨¬¥¥âáï LL(1)-£à ¬¬ ⨪ . ’®£¤ ¤«ï ª ¦¤®£® ¥â¥à¬¨ « ¯®áâ஥¨¥ ¤¨ £à ¬¬ë ¢ª«îç ¥â á«¥¤ãî騥 è £¨.
˜ £ 1. ‚¢®¤¨¬ ç «ì®¥ ¨ § ª«îç¨â¥«ì®¥ á®áâ®ï¨ï.
˜ £ 2. „«ï ª ¦¤®£® ¯à ¢¨« ¢ë¢®¤ A->X1X2...Xn áâந¬ ¯ãâì ¨§ ç «ì®£® ¢ ª®¥ç®¥ á®áâ®ï¨¥ á ¤ã£ ¬¨, ¯®¬¥ç¥ë¬¨ X1,...,Xn. …᫨ «¨§ â®à, ¯®áâà®¥ë© ¯® ¤¨ £à ¬¬¥ ¯¥à¥å®¤®¢, ®ª §ë¢ ¥âáï ¢ á®áâ®ï¨¨ s ¨ ¤ã£ , ¯®¬¥ç¥ ï â¥à¬¨ «®¬ a, ¢¥¤¥â ¢ á®áâ®ï¨¥ t, â® ¥á«¨ ®ç¥à¥¤®© ¢å®¤®© ᨬ¢®« à ¢¥ a, «¨§ â®à ¯à®¤¢¨£ ¥â ¢å®¤ ®¤ã ¯®§¨æ¨î ¢¯à ¢® ¨ ¯¥à¥å®¤¨â ¢ á®áâ®ï¨¥ t. …᫨ ¦¥ ¤ã£ ¯®¬¥ç¥ ¥â¥à¬¨ «®¬ A, «¨§ â®à ¢å®¤¨â ¢ ç «ì®¥ á®áâ®ï¨¥ ¤«ï A ¡¥§ ¯à®¤¢¨¦¥¨ï ¢å®¤ . �®á«¥ ⮣® ª ª ® ¤®á⨣ ¥â § ª«îç¨â¥«ì®£® á®áâ®ï¨ï ¤«ï A, ® ¯¥à¥å®¤¨â ¢ á®áâ®ï¨¥ t, çâ® ®§ ç ¥â "ç⥨¥" A ¨§ ¢å®¤ ¯à¨ ¯¥à¥å®¤¥ ¨§ á®áâ®ï¨ï s ¢ á®áâ®ï¨¥ t. � ª®¥æ, ¥á«¨ ¥áâì ¤ã£ ¨§ s ¢ t, ¯®¬¥ç¥ ï e, â® «¨§ â®à ¯¥à¥å®¤¨â ¨§ s ¢ t, ¥ ç¨â ï ¢å®¤ .
…᫨ á«¥¤®¢ âì ¯à®£à ¬¬¥ ४ãàᨢ®£® á¯ã᪠, â® ¯¥à¥å®¤ ¯® e ¤®«¦¥ ¢á¥£¤ ¢ë¡¨à âìáï ¢ ª ç¥á⢥ ¯®á«¥¤¥© «ìâ¥à ⨢ë.
„¨ £à ¬¬ë ¯¥à¥å®¤®¢ ¬®£ãâ ¡ëâì ã¯à®é¥ë ¯®¤áâ ®¢ª®© ®¤®© ¢ ¤àã£ãî. � áᬮâਬ, ¯à¨¬¥à, ¤¨ £à ¬¬ë ¤«ï à¨ä¬¥â¨ç¥áª¨å ¢ëà ¦¥¨© à¨á. 3.10.
ÚÄÄÄ¿ T ÚÄÄÄ¿ E'ÚÂÄÄÄ¿ ÚÄÄÄ¿ + ÚÄÄÄ¿ T ÚÄÄÄ¿ E'ÚÂÄÄÄ¿
E:³ 0 ÃÄÄ>³ 1 ÃÄÄ>³³ 2 ³³E':³ 3 ÃÄÄ>³ 4 ÃÄÄ>³ 5 ÃÄÄ>³³ 6 ³³
ÀÄÄÄÙ ÀÄÄÄÙ ÀÁÄÄÄÁÙ ÀÄÂÄÙ ÀÄÄÄÙ ÀÄÄÄÙ ÀÁÄÄÄÁÙ
³ ^
³ e ³
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
ÚÄÄÄ¿ T ÚÄÄÄ¿ E'ÚÂÄÄÄ¿ ÚÄÄÄÄ¿ + ÚÄÄÄÄ¿ T ÚÄÄÄÄ¿ E'ÚÂÄÄ¿
E:³ 7 ÃÄÄ>³ 8 ÃÄÄ>³³ 9 ³³E':³ 10 ÃÄÄ>³ 11 ÃÄÄ>³ 12 ÃÄÄ>³³13³³
ÀÄÄÄÙ ÀÄÄÄÙ ÀÁÄÄÄÁÙ ÀÄÂÄÄÙ ÀÄÄÄÄÙ ÀÄÄÄÄÙ ÀÁÄÄÁÙ
³ ^
³ e ³
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
ÚÄÄÄÄ¿ ( ÚÄÄÄÄ¿ E ÚÄÄÄÄ¿ ) ÚÂÄÄÄÄ¿
F: ³ 14 ÃÄÄÄÄ>³ 15 ÃÄÄÄÄ>³ 16 ÃÄÄÄÄ>³³ 17 ³³
ÀÄÂÄÄÙ ÀÄÄÄÄÙ ÀÄÄÄÄÙ ÀÁÄÄÄÄÁÙ
³ ^
³ id ³
ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
�¨á. 3.10
e
ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ÚÄÄÄÄÄÄÄÄÄ¿
³ ³ ³ T ³
v ³ v ³
ÚÄÄÄ¿ + ÚÄÄÄ¿ T ÚÂÄÁÄ¿ ÚÄÄÄ¿ + ÚÄÁÄ¿
E': ³ 3 ÃÄÄÄÄÄ>³ 4 ÃÄÄÄÄ>³³ 5 ³³ => E':³ 3 ÃÄÄÄÄ>³ 4 ³
ÀÄÂÄÙ ÀÄÄÄÙ ÀÁÄÄÄÁÙ ÀÄÂÄÙ ÀÄÄÄÙ















