Translaatorid ja transleerimise etapid
Translaator on programm, mis teisendab ühes programmeerimiskeeles (lähtekeeles) kirjutatud programmi (nn lähtekoodi) teises programmeerimiskeeles (objektkeeles) kirjutatud programmiks (objektkoodiks)
Kui lähtekeel ja objektkeel on piisavalt rangelt formaalselt kirjeldatud, saab nende kirjelduste abil translaatori (või mõne selle alametapi
automaatselt genereerida.
Transleerimine (lähteteksti teisendamine väljundtekstiks) on keerukas protsess ja tavaliselt jagatakse see etappideks. Erinevates translaatorites kasutatakse erinevat liigendust, kuid tüüpilised transleerimise etappid on:
leksiline analüüs: lähtetekstis (sümbolite jada) leitakse lekseemid: identifikaatorid (muutujad), lähtekeelekeele võtmesõnad (begin, if, then, else, main,...), aritmeetilised operaatorid, eraldaja (sulumärgid, reavahetused,...), eemaldatakse ülearused tühikud (see lihtne teisendus võimaldab transleeritavat teksti keskmiselt vähemalt 20% kokku suruda ja seega kiirendada järgnevaid etappe) jne; leksilise analüüsi tulemusena muutub lähteteksti sümbolite jada lekseemide jadaks;
süntaksianalüüs: lekseemide jada liigendamine programmikäskudeks, aritmeetilisteks avaldisteks jne; süntaksi analüüsi tulemusena konstrueeritakse lekseemide jadast transleeritava programmi (konkreetse) süntaksi puu
abstraktse (hõreda) süntaksi puu moodustamine: süntaksi analüüsi tulemusena saadud programmi süntaksi puust eemaldatakse kõik mitteoluline, s.t. kõik lähtekeele süntaksiga seotud osad (näiteks lähtekeele võtmesõnad), säilitades seejuures süntaksi puu semantika (struktuuri); see etapp on sooritatakse peamiselt edasiste teisenduste kiirendamiseks;
semantiline analüüs ja väljundkoodi genereerimine: programmi (abstraktse) süntaksi puu kirjeldatakse väljundkeele vahenditega, s.t. väljundkeele programmina (väljundtekstina).
Ülesandeid:
Küsimused, probleemid:
©2004 Jaak Henno
Tagasi loengute sisukorra juurde