Treść książki
Przejdź do opcji czytnikaPrzejdź do nawigacjiPrzejdź do informacjiPrzejdź do stopki
2.1.WPROWADZENIE
45
jestto,żenaszanalizatorskładniowybędziemógłdziałaćbezpośredniona
pojedynczychznakachdlaoperatorówioperandów.
źródłowy
program
Analizator
leksykalny
tokeny
symboli
Tablica
Parser
składniowe
drzewo
pośredniego
Generator
kodu
trójadresowy
kod
RYSUNEK
203:Modelprzodukompilatora
Analizatorleksykalnypozwalanaprzetwarzanieprzeztranslatorwielozna-
kowychkonstrukcji,takichjakidentyfikatorynapisanejakosekwencjeznaków,
aletraktowanejakojednostkinazywanetokenamipodczasanalizyskładnio-
wej.Naprzykładwwyrażeniu
count+1
identyfikator
count
jesttraktowany
jakojednostka.Analizatorleksykalnypokazanywpodrozdziale2.6pozwalana
pojawianiesięwwyrażeniach(poddawanychanalizieskładniowej)jednostek
(tokenów)takichjakliczby,identyfikatoryinbiałeznaki”(spacje,tabulatory
iznakinowegowiersza).
Następnierozważymygenerowaniekodupośredniego.Rysunek2.4ilustruje
dwieformykodupośredniego.Jednaznich,nazywanaabstrakcyjnymdrzewem
składniowymlubpoprostudrzewemskładniowym,reprezentujehierarchiczną
strukturęskładniowąprogramuźródłowego.Wmodeluprzedstawionymna
rysunku2.3parsertworzydrzewoskładniowe,którejestpóźniejtłumaczone
nakodtrójadresowy.Niektórekompilatoryłącząanalizęigenerowaniekodu
pośredniegowjedenkomponent.
Korzeńabstrakcyjnegodrzewaskładniowegopokazanegonarysunku2.4(a)
reprezentujecałąpętlędo-while.Lewapotomnagałąźprzedstawiaciałopętli,
do-while
ciało
>
przypisanie
[]
v
i
+
i
1
(a)
1:i=i+1
2:t1=a[i]
3:ift1<vgoto1
(b)
RYSUNEK
204:Kodpośrednidlandoi=i+1;while(a[i]<v);”