Treść książki

Przejdź do opcji czytnikaPrzejdź do nawigacjiPrzejdź do informacjiPrzejdź do stopki
6
ROZDZIAŁ1.WPROWADZENIE
razemireprezentacjepośredniemiędzyzgrupowanymifazaminiemusząbyć
jawniekonstruowane.Tablicasymboli,któraprzechowujeinformacjeocałym
programieźródłowy,jestużywanawewszystkichfazachdziałaniakompilatora.
Niektórekompilatorywykorzystująfazęoptymalizacjiniezależnejodma-
szynymiędzyczęściąprzedniąatylną.Celemtejfazyoptymalizacyjnejjest
wykonanieprzekształceńreprezentacjipośredniej,abysegmentback-endmógł
wytworzyćlepszyprogramwynikowy,niżpowstałyzniezoptymalizowanego
kodupośredniego.Jakożeoptymalizacjajestopcjonalna,jednalubobiefazy
optymalizacyjnewidocznenarysunku1.6mogąbyćnieobecne.
1.2.1.Analizaleksykalna
Pierwszafazadziałaniakompilatoranazywanajestanaliząleksykalnąlubska-
nowaniem.Analizatorleksykalny(nazywanyniekiedyskaneremlublekserem)
odczytujestrumieńznakówbudującychprogramźródłowyigrupujeteznaki
wznaczącesekwencjenazywaneleksemami.Dlakażdegoleksemuanalizator
leksykalnytworzywyjściewpostacitokenuwformacie
(nazwa-tokenu,wartość-atrybutu)
któryprzekazywanyjestdonastępnejfazy,czylianalizyskładniowej.Wtokenie
pierwszykomponentnazwa-tokenujestsymbolemabstrakcyjnym,któryużywany
jestpodczasanalizyskładniowej,drugizaśkomponentwartość-atrybutuwskazuje
wpiswtablicysymbolidlategotokenu.Informacjazawartawewpisiewtablicy
symbolijestpotrzebnadlaanalizysemantycznejigenerowaniakodu.
Naprzykładprzypuśćmy,żeprogramźródłowyzawierainstrukcjęprzypisania
position=initial+rate*60
(1.1)
Znakiwtymwyrażeniumogązostaćpogrupowanewnastępująceleksemy
iodwzorowanenanastępującetokenyprzekazywanedoanalizatoraskładniowego:
1.position
jestleksemem,któryzostanienodwzorowany”natoken
(id
,1
>
,
gdzie
id
jestsymbolemabstrakcyjnymoznaczającymidentyfikator,1wska-
zujezaśwpiswtablicysymbolidla
position
.Wpiswtabelisymbolidla
identyfikatoraprzechowujeinformacjeotymidentyfikatorze,takiejakjego
nazwaityp.
2.
Symbolprzypisania=jestleksememodwzorowanymnatoken
(
=
>
.Po-
nieważtentokenniepotrzebujewartości,pominęliśmydrugikomponent.
Moglibyśmyużyćdowolnegoabstrakcyjnegosymbolu,takiegojak
assign
jakonazwytokenu,aledlawygodyzapisuzdecydowaliśmysięużyćsamego
leksemujakonazwysymboluabstrakcyjnego.
3.initial
jestleksememodwzorowanymna
(id
,2
>
,przyczym2wskazuje
wpiswtabelisymbolidlainitial.
4.+jestleksememodwzorowanymnatoken(+>.