Treść książki
Przejdź do opcji czytnikaPrzejdź do nawigacjiPrzejdź do informacjiPrzejdź do stopki
72
ROZDZIAŁ2.PROSTYTRANSLATORSTEROWANYSKŁADNIĄ
2.4.4.Projektowanieparserapredykcyjnego
Spróbujmyterazuogólnićtechnikęwprowadzonąnieformalniewpodrozdziale
2.4.2,abyzastosowaćjądodowolnejgramatyki,któramarozłącznezbiory
FIRST
dlaciałprodukcjinależącychdokażdegodowolnegosymbolunieterminalnego.
Zobaczymyrównież,żejeślimamyschemattranslacji–czyligramatykęzosa-
dzonymiakcjami–możliwejestwykonanietychdziałańjakoczęściprocedur
zaprojektowanychdlaparsera.
Przypomnijmy,żepredykcyjnyparsertoprogramskładającysięzprocedur
dlakażdegosymbolunieterminalnego.Proceduradlanieterminala
A
wykonuje
dwieczynności.
1.
Decyduje,którejprodukcjiosymboluAwnagłówkunależyużyć,badając
symbolpodglądany.Używanajestprodukcjazciałem
O
(gdzie
O
niejest
ć
–pustymciągiem),jeślisymbolpodglądanynależydozbioru
FIRST
(
O
).
Jeśliwystępujekonfliktmiędzydwomaniepustymiciałamidladowolnego
symbolupodglądanego,niemożemyużywaćtejmetodyanalizydladanej
gramatyki.Dodatkowo
ć
-produkcjadla
A
,jeśliistnieje,jestużywana,
gdysymbolpodglądanyniewystępujewzbiorze
FIRST
dlaciałakażdej
zpozostałychprodukcjiosymboluAwnagłówku.
2.
Następnieproceduraodwzorowujeciałowybranejprodukcji.Inaczejmó-
wiąc,ciałoprodukcjijestnwykonywane”kolejnoodlewej.nWykonanie”
symbolunieterminalnegooznaczawywołanieprocedurydlategonietermi-
nala,terminalzaśpasującydosymbolupodglądanegojestnwykonywany”
przezodczytaniekolejnegosymboluwejściowego.Jeśliwjakimśmomencie
symbolterminalnywcieleniepasujedosymbolupodglądanego,zgłaszany
jestbłądskładni.
Rysunek2.19pokazujewynikzastosowaniatychregułdogramatykizry-
sunku2.16.
Podobniejakschemattranslacjitworzonyjestprzezrozszerzeniegramatyki,
translatorsterowanyskładniąmożnazbudować,rozszerzającparserpredykcyjny.
Algorytmdlategozadaniazostanieprzedstawionywpodrozdziale5.4.Narazie
wystarczynamnastępującaograniczonakonstrukcja:
1.
Konstruujemyparserpredykcyjny,ignorującakcjezawartewprodukcjach.
2.
Kopiujemyakcjezeschematutranslacjidokoduparsera.Jeśliakcjawy-
stępujeposymbolugramatycznym
X
wprodukcji
p
,jestkopiowanapo
kodzieimplementującym
X
wprocedurzedla
p
.Wprzeciwnymrazie,
jeśliwystępujenapoczątkuprodukcji,jestkopiowanabezpośrednioprzed
kodemdlaciałatejprodukcji.
Translatortakizbudujemywpodrozdziale2.5.