Kompiliatorius

   Šiam straipsniui ar jo daliai trūksta išnašų į patikimus šaltinius.
Jūs galite padėti Vikipedijai pridėdami tinkamas išnašas su šaltiniais.

Kompiliatoriusprograminė įranga, kuri sugeba tam tikra programavimo kalba parašytą programą transliuoti į ekvivalenčią programą kita kalba. Dažniausiai kompiliatorius transliuoja aukšto lygio programavimo kalba parašytą kodą į mašininį ar objektinį kodą, kurį gali vykdyti tam tikras kompiuteris arba virtuali mašina. Tačiau galimas ir atvirkščias variantas – kai iš žemo lygio mašininio kodo transliuojama į aukšto lygio programavimo kalbą, tokiu atveju kompiliatorius dažniausiai vadinamas dekompiliatoriumi.

Pirmieji eksperimentiniai kompiliatoriai pagaminti XX a. šeštajame dešimtmetyje, bet pirmu pilnu kompiliatoriumi laikomas FORTRAN kalbos kompiliatorius, pristatytas 1957 metais.

Kompiliavimo etapai

Kompiliavimas yra sudėtingas procesas, todėl dažnai yra skaidomas į keletą smulkesnių. Kompiliavimo etapai gali būti tiek išreikšti (paleidžiama atskira programa vieno etapo veiksmams atlikti), tiek neišreikšti (keli ar net visi etapai yra įvykdomi vienoje programoje). Kai kurie etapai gali būti vykdomi lygiagrečiai.

Skiriami tokie etapai:

Parengiamosios doroklės
programų išeities tekstas yra papildomas informacija iš bibliotekų, išskleidžiamos makrokomandos, pašalinamos kodo dalys, kurios nereikalingos konkrečiam kompiliavimo atvejui;
Leksinio analizatoriaus
išeities tekstas yra suskaidomas į smulkiausius programavimo kalbos elementus (identifikatorius, operatorius, kitus sintaksės elementus);
Sintaksės analizatoriaus
nagrinėjama, ar pateiktas tekstas atitinka programavimo kalbos sintaksės taisykles (t. y. ar atinka skliaustų skaičius, ar rezervuoti žodžiai nenaudojami kaip identifikatoriai, pan.);
Semantikos analizatoriaus
nagrinėjama, ar pateiktas tekstas atitinka programavimo kalbos semantikos taisykles (t. y. ar struktūra turi tokį elementą, į kokį kreipiamasi, ar priskiriama tinkamo tipo reikšmė ir pan.);
Kodo generavimo
generuojamas paskirties kalbos kodas;
Kodo optimizavimo
bandoma pagerinti paskirties kodo kokybę – padaryti jį greičiau vykdomu, užimančiu mažiau vietos ar pan. (transiliavimo metu suskaičiuojamos konstantinės išraiškos, vienodos išraiškos skaičiuojamos tik kartą, parenkamos efektyvesnės procesoriaus komandos ir t. t.);
Ryšių redagavimo
prijungiamos išorinės bibliotekos (vykdomas tik jei kompiliuojama į mašininį kodą).


Taip pat skaitykite

Nuorodos