Treść książki
Przejdź do opcji czytnikaPrzejdź do nawigacjiPrzejdź do informacjiPrzejdź do stopki
44
ROZDZIAŁ2.PROSTYTRANSLATORSTEROWANYSKŁADNIĄ
10:
11:
12:
13:
14:
1:
2:
3:
4:
5:
6:
7:
8:
9:
i=i+1
t1=a[i]
ift1<vgoto1
j=j-1
t2=a[j]
ift2>vgoto4
ifFalsei>=jgoto9
goto14
x=a[i]
t3=a[j]
a[i]=t3
a[j]=x
goto1
RYSUNEK
202:Uproszczonykodpośrednidlafragmentukoduzrysunku2.1
2.1.Wprowadzenie
Fazaanalizykompilatoradzieliprogramźródłowynaczęściskładoweitwo-
rzyjegowewnętrznąreprezentacjęnazywanąkodempośrednim.Fazasyntezy
tłumaczykodpośredninawynikowyprogram.
Analizajestzbudowanawokółnskładni”języka,którymazostaćskompi-
lowany.Składniajęzykaprogramowaniaopisujeprawidłowąformęprogramów
wtymjęzyku,podczasgdysemantykajęzykadefiniuje,coteprogramyznaczą
–wtymsensie,codanyprogramrobi,gdyjestwykonywany.Dowyspecyfikowania
składniwpodrozdziale2.2zaprezentujemyszerokoużywanąnotacjęnazywaną
gramatykąbezkontekstowąalboBNF(akronimodBackus-NaurForm).Przy
użyciuobecniedostępnychnotacjisemantykajęzykajestznacznietrudniejsza
doopisanianiżjegoskładnia.Ztegowzględuprzyopisiesemantykibędziemy
używaćnieformalnychopisówipomocnychprzykładów.
Opróczspecyfikacjiskładnijęzykagramatykabezkontekstowamożezostać
użytajakopomocprzytłumaczeniuprogramów.Wpodrozdziale2.3przedsta-
wimyopierającąsięnagramatycetechnikękompilacjiznanąjakotłumaczenie
sterowaneskładnią(syntax-directedtranslation).Analizęskładniową(parsing)
zajmiemysięwpodrozdziale2.4.
Resztategorozdziałutoszybkiprzeglądmodeluprzodukompilatorapokaza-
negonarysunku2.3.Zaczniemyodparsera.Napoczątekrozważymysterowane
składniątłumaczeniewyrażeńinfiksowychnapostfiksowąformęzapisu,wktórej
operatorynastępująposwoichoperandach.Naprzykładpostfiksowaformawy-
rażenia
9-5+2
to
95-2+
.Tłumaczenienaformępostfiksowąjestwystarczająco
rozbudowane,abyzilustrowaćanalizęskładniową,aledośćproste,abymóczbu-
dowaćtranslatorpokazanywcałościwpodrozdziale2.5.Tenprostytranslator
obsługujewyrażeniatakiejak
9-5+2
,złożonezcyfrrozdzielanychznakamiplus
iminus.Jednymzpowodów,dlaktórychzaczynamyodtakprostychwyrażeń,