Kompilaator

Kompilaator ehk translaator on arvutiprogramm, mis tõlgib (kompileerib) ühes arvutikeeles (lähtekeel) kirjutatud lähtekoodi teise arvutikeelde (sihtkeel, tihti binaarne objektikood). Sagedasim põhjus selliseks lähtekoodi teisenduseks on käivitatava programmi loomine.

Nime "kompilaator" kasutatakse harilikult programmide kohta, mis tõlgivad kõrgtaseme programmeerimiskeelest madalama taseme keelde (näiteks assemblerkeelde või masinkoodi). Madaltaseme keelest kõrgema taseme keelde tõlkivat programmi nimetatakse dekompilaatoriks. Ühest kõrgtaseme keelest teise tõlkivat programmi nimetatakse translaatoriks. Programmeerimiskeele elementide erinevate vormide vahel ilma keelt vahetamata tõlkivat programmi nimetatakse keele ümberkirjutajaks. Ühest kõrgest keelest vahepealsesse, edasist töötlust nõudvasse keelde tõlkivaid kompilaatoreid tuntakse kaskaadijatena.

Madala taseme assemblerkeele kompilaatorit nimetatakse harilikult assembleriks ja dekompilaatorit disassembleriks.

Kompilaator teostab oma töö käigus tavaliselt järgmised operatsioonid: leksiline analüüs, eelprotsessimine, parsimine, semantiline analüüs, koodi genereerimine ja koodi optimeerimine.

Terminit kompilaatori-kompilaator kasutatakse parseri generaatorite kohta.

 Kompileeritavad ja interpreteeritavad keeled 

Alternatiivne meetod programmi käivitamiseks ilma kompileerimata on programmikoodi käivitamine interpretaatoriga.

Kõrgemaid programmeerimiskeeled liigitatakse sageli kompileeritavateks ja interpreteeritavateks keelteks. Teoreetiliselt võib kompilaatori ja interpretaatori luua iga keele jaoks ning praktikas on paljude keelte jaoks olemas mõlemad. Selline kategoriseerimine viitab harilikult programmeerimiskeele levinuimatele implementatsioonidele. Näiteks viidatakse harilikult BASICule kui interpreteeritavale ja C-le kui kompileeritavale keelele, kuigi leidub ka BASICu kompilaatoreid ja C interpretaatoreid.Ch -- an embeddable C/C++ interpreter

Vaata ka
Linkur
Interpretaator
GNU Compiler Collection

Viited

Kompilaator
Kategooria:Programmeerimine