Treść książki

Przejdź do opcji czytnikaPrzejdź do nawigacjiPrzejdź do informacjiPrzejdź do stopki
16
ROZDZIAŁ1.WPROWADZENIE
1.4.Teoriakonstruowaniakompilatorów
Projektykompilatorówpełnepięknychprzykładów,wktórychzłożonepro-
blemypraktycznerozwiązywaneprzezmatematycznąabstrakcjęistoty
problemu.Stanowiąonedoskonałeilustracjetego,jakmożnaużyćabstrak-
cjidorozwiązywaniaproblemów:bierzemyproblem,formułujemymatematyczne
uogólnienieuwzględniającejegokluczowecechyirozwiązujemygoprzyużyciu
technikmatematycznych.Sformułowanieproblemumusiopieraćsięnadobrym
rozumieniucechcharakterystycznychprogramówkomputerowych,rozwiązanie
zaśmusizostaćempiryczniezweryfikowaneidostrojone.
Kompilatormusiakceptowaćwszystkieprogramyźródłowezgodnezespe-
cyfikacjąjęzyka;zbiórprogramówźródłowychjestzasadniczonieskończony,
adowolnyprogrammożebyćbardzoobszernyiskładaćsiępotencjalniezmi-
lionówwierszykodu.Dowolnetransformacjewykonywaneprzezkompilator
podczastłumaczeniaprogramuźródłowegomuszązachowywaćsenskompilowa-
negoprogramu.Twórcykompilatorówmajązatemwpływnietylkonapisane
przezsiebiekompilatory,lecztakżenawszelkieprogramygenerowaneprzezte
kompilatory.Touwarunkowaniesprawia,żepisaniekompilatorówjestszczegól-
niesatysfakcjonujące;jednaksprawiateż,żeprojektowaniekompilatorówjest
prawdziwymwyzwaniem.
1.4.1.Modelowaniewprojektowaniuiimplementacjikompilatora
Badaniekompilatorówpolegagłównienastudiowaniu,jakprojektowaćwłaściwe
modelematematyczneiwybieraćodpowiedniealgorytmy,zapewniającrówno-
wagęmiędzywymaganiemogólnościiskutecznościaprostotąiwydajnością.
Niektóreznajbardziejpodstawowychmodelitoautomatyskończone(finite-
statemachine,FSM)iwyrażeniaregularne,którymizajmiemysięwrozdziale3.
Modeleteprzydatneprzyopisywaniujednostekleksykalnychprogramów
(słówkluczowych,identyfikatorówitemupodobnych)iopisywaniualgorytmów
używanychprzezkompilatorwcelurozpoznawaniatychjednostek.Dofundamen-
talnychmodelinależąrównieżgramatykibezkontekstowesłużącedoopisywania
strukturskładniowychjęzykówprogramowania,takichjakzagnieżdżanienawia-
sówlubkonstrukcjesterujące.Gramatykamizajmiemysięwrozdziale4.Innym
ważnymmodelemreprezentującymstrukturęprogramuiichtranslacjęnakod
obiektowydrzewa,cozobaczymywrozdziale5.
1.4.2.Naukaooptymalizacjikodu
Terminnoptymalizacja”wkontekścieprojektowaniakompilatorówodnosisię
dopróbpodejmowanychprzezkompilatorwceluwytworzeniakodubardziej
wydajnegoniżkodoczywisty(narzucającysię).nOptymalizacja”jestwięcbłędną