Treść książki

Przejdź do opcji czytnikaPrzejdź do nawigacjiPrzejdź do informacjiPrzejdź do stopki
12
ROZDZIAŁ1.WPROWADZENIE
takieelementy,jakliczbaitypyjejargumentów,metodaprzekazaniakażdego
argumentu(naprzykładprzezwartośćlubprzezreferencję)orazzwracanytyp.
Tablicasymbolijeststrukturądanychzawierającąrekorddlawszystkichnazw
zmiennych,zpolamidlaatrybutówtychnazw.Tastrukturadanychpowinna
zostaćtakzaprojektowana,abyumożliwićkompilatorowiszybkieodszukanie
rekordudlakażdejnazwy,jakrównieższybkiezapisywanieiodczytywanie
danychztegorekordu.Tablicesymbolizostanąomówionewrozdziale2.
1.2.;.Grupowaniefazwprzebiegi
Omawianefazykompilacjiodnosząsiędologicznejorganizacjikompilatora.
Wkonkretnejimplementacjiaktywnośćzwielufazmożezostaćpogrupowana
łączniewprzebieg(pass)odczytującyplikwejściowyizapisującyplikwyj-
ściowy.Naprzykładfazyanalizyleksykalnej,składniowejisemantycznejwraz
zgenerowaniemkodupośredniegomogązostaćzgrupowanewjedenprzebieg.
Optymalizacjakodumożebyćopcjonalnymprzebiegiem.Nakoniecmożemy
miećprzebiegczęściback-endu,wykonującygenerowaniekodudlaokreślonej
maszynydocelowej.
Niektórezestawy(kolekcje)kompilatorówzostałyzbudowanewokółstaran-
niezaprojektowanychreprezentacjipośrednich,którepozwalająnapołączenie
przodudlaokreślonegojęzykaztyłemdlawybranejmaszynydocelowej.Wtych
zestawachmożnatworzyćkompilatorydlaróżnychjęzykówźródłowychdla
jednejmaszynydocelowejprzezdołączanieróżnychfront-endówdoback-endu
dlatejmaszyny.
Analogicznie,możemyłatwoutworzyćkompilatorydlaróżnycharchitektur
docelowychmaszyn,łączącfront-enddlawybranegojęzykazback-endamidla
różnychmaszyn.
1.2.s.Narzędziadobudowaniakompilatorów
Twórcakompilatorów,podobniejakkażdyinnyprogramista,możezpowodze-
niemwykorzystywaćnowoczesneśrodowiskaprojektowaniaoprogramowania
zawierającetakienarzędzia,jakedytorydlaposzczególnychjęzyków,debugery,
mechanizmyzarządzaniawersjami,profilery,jarzmatestoweitakdalej.Oprócz
tychogólnychnarzędziprogramistycznychistniejąrównieżbardziejspecjali-
stycznenarzędzia,którepowstaływceluułatwieniaimplementacjiróżnychfaz
kompilatora.
Narzędziateużywająspecjalizowanychjęzykówdospecyfikowaniaiimple-
mentowaniaokreślonychkomponentówimogąużywaćnaprawdęwyrafinowanych
algorytmów.Większośćudanychnarzędzitote,któreukrywająszczegółyalgo-
rytmugenerującegoitworząkomponenty,któremogąbyćłatwozintegrowane
zpozostałymiczęściamikompilatora.Doczęstoużywanychnarzędzikonstruują-
cychkompilatorynależą: