Što je dizajn prevoditelja? Vrste, alati za gradnju, primjer
Što je kompilator?
Kompajler je računalni program koji vam pomaže transformirati izvorni kod napisan na jeziku visoke razine u strojni jezik niske razine. Prevodi kod napisan u jednom programskom jeziku u neki drugi jezik bez promjene značenja koda. Kompajler također čini krajnji kod učinkovitim, koji je optimiziran za vrijeme izvođenja i memorijski prostor.
Proces prevođenja uključuje osnovne mehanizme prevođenja i otkrivanje pogrešaka. Proces prevodioca prolazi kroz leksičku, sintaktičku i semantičku analizu na prednjem kraju i generiranje koda i optimizaciju na pozadinskom.
Značajke prevoditelja
- Ispravnost
- Brzina kompilacije
- Sačuvajte ispravno značenje koda
- Brzina ciljnog koda
- Prepoznati legalne i ilegalne programske konstrukcije
- Dobro izvješćivanje o greškama/upravljanje greškama
- Pomoć za otklanjanje pogrešaka koda
Vrste kompilatora
Slijede različite vrste kompilatora:
- Jednoprolazni kompajleri
- Dva prolazna kompajlera
- Višeprolazni kompajleri
Jednostruki prevodilac
U jednom prolazu izvorni kod prevoditelja izravno se pretvara u strojni kod. Na primjer, Pascal jezik.
Kompajler u dva prolaza
Dvoprolazni prevodilac podijeljen je u dva dijela, tj.
- Prednji kraj: Preslikava pravni kod u posredničko zastupanje (IR).
- Stražnja strana: Preslikava IR na ciljni stroj
Metoda kompajlera u dva prolaza također pojednostavljuje proces ponovnog ciljanja. Također omogućuje više prednjih krajeva.
Višeprolazni kompajleri
Višeprolazni prevodilac obrađuje izvorni kod ili stablo sintakse programa nekoliko puta. Podijelio je veliki program na više malih programa i obradio ih. Razvija više posrednih kodova. Svi ovi multipass uzimaju izlaz prethodne faze kao ulaz. Stoga zahtijeva manje memorije. Također je poznat kao 'Wide Compiler'.
Zadaci kompajlera
Glavni zadaci koje obavlja kompilator su:
- Rastavlja izvorni program na dijelove i nameće im gramatičku strukturu
- Omogućuje vam da konstruirate željeni ciljni program iz posrednog prikaza i također kreirate tablicu simbola
- Sastavlja izvorni kod i otkriva pogreške u njemu
- Upravljanje pohranom svih varijabli i kodova.
- Podrška za zasebnu kompilaciju
- Pročitajte, analizirajte cijeli program i prevedite na semantički ekvivalent
- Prevođenje izvornog koda u objektni kod ovisno o vrsti stroja
Povijest kompajlera
Važan orijentir u povijesti Compiler-a je sljedeći:
- Grace Murray Hopper prvi je put upotrijebila riječ "kompilator" ranih 1950-ih.
- Prvi kompilator izgradili su John Backum i njegova grupa između 1954. i 1957. godine IBM.
- COBOL je bio prvi programski jezik koji je 1960. kompiliran na više platformi
- Proučavanje problema skeniranja i parsiranja nastavljeno je 1960-ih i 1970-ih kako bi se pružilo potpuno rješenje.
Koraci za sustave za obradu jezika
Prije nego što saznate o konceptu prevoditelja, prvo morate razumjeti nekoliko drugih alata koji rade s prevoditeljima.
- Pretprocesor: Predprocesor se smatra dijelom prevoditelja. To je alat koji proizvodi ulazne podatke za Compiler. Bavi se makro obradom, povećanjem, proširenjem jezika itd.
- Tumač: Interpretator je poput kompajlera koji prevodi jezik visoke razine u strojni jezik niske razine. Glavna razlika između oba je ta što tumač čita i transformira kod red po red. Kompajler čita cijeli kod odjednom i stvara strojni kod.
- Asembler: Prevodi kod asemblerskog jezika u strojno razumljiv jezik. Izlazni rezultat asemblera poznat je kao objektna datoteka koja je kombinacija strojnih instrukcija kao i podataka potrebnih za pohranjivanje ovih instrukcija u memoriju.
- Linkovi: Povezivač vam pomaže da povežete i spojite različite objektne datoteke kako biste stvorili izvršnu datoteku. Sve te datoteke možda su kompajlirane s posebnim asemblerima. Glavni zadatak povezivača je tražiti pozvane module u programu i pronaći memorijsku lokaciju na kojoj su svi moduli pohranjeni.
- Utovarivač: Učitavač je dio OS-a koji obavlja zadatke učitavanja izvršnih datoteka u memoriju i njihovog pokretanja. Također izračunava veličinu programa koji stvara dodatni memorijski prostor.
- Unakrsni kompajler: Unakrsni kompajler u dizajnu prevoditelja je platforma koja vam pomaže da generirate izvršni kod.
- Source-to-source prevodilac: Izvorni prevoditelj je izraz koji se koristi kada se izvorni kod jednog programskog jezika prevodi u izvorni kod drugog jezika.
Alati za konstrukciju prevoditelja
Alati za konstrukciju prevoditelja uvedeni su kako su se računalne tehnologije proširile po cijelom svijetu. Također su poznati kao prevoditelji-prevoditelji, prevoditelji-generatori ili prevoditelji.
Ovi alati koriste određeni jezik ili algoritam za određivanje i implementaciju komponente prevoditelja. Slijede primjeri alata za konstrukciju prevoditelja.
- Generatori skenera: Ovaj alat uzima regularne izraze kao ulaz. Na primjer LEX za Unix Operating sustav.
- Motori za prevođenje usmjereni sintaksom: Ove programski alati ponudi međukod pomoću stabla za raščlanjivanje. Njegov cilj je pridružiti jedan ili više prijevoda sa svakim čvorom stabla raščlanjivanja.
- Generatori parsera: Generator parsera uzima gramatiku kao ulaz i automatski generira izvorni kod koji može analizirati tokove znakova uz pomoć gramatike.
- Automatski generatori kodova: Uzima međukod i pretvara ga u strojni jezik.
- Motori protoka podataka: Ovaj alat je koristan za optimizaciju koda. Ovdje informacije dostavlja korisnik, a međukod se uspoređuje kako bi se analizirala bilo koja relacija. Također je poznata kao analiza protoka podataka. Pomaže vam da saznate kako se vrijednosti prenose iz jednog dijela programa u drugi dio.
Zašto koristiti kompilator?
- Kompajler provjerava cijeli program, tako da nema sintaktičkih ili semantičkih pogrešaka.
- Izvršnu datoteku optimizira kompajler, tako da se brže izvršava.
- Omogućuje vam stvaranje unutarnje strukture u memoriji.
- Nema potrebe izvršavati program na istom stroju na kojem je napravljen.
- Prevedite cijeli program na drugi jezik.
- Generirajte datoteke na disku.
- Povežite datoteke u izvršni format.
- Provjerite sintaktičke pogreške i vrste podataka.
- Pomaže vam da poboljšate svoje razumijevanje semantike jezika.
- Pomaže u rješavanju problema s jezičnom izvedbom.
- Prilika za netrivijalni projekt programiranja.
- Tehnike korištene za konstruiranje prevoditelja mogu biti korisne i za druge svrhe.
Primjena prevoditelja
- Dizajn prevoditelja pomaže potpunoj implementaciji programskih jezika visoke razine.
- Podrška za optimizaciju za računalo Architecture Paralelizam.
- Dizajn novih memorijskih hijerarhija strojeva.
- Široko korišten za prevođenje programa.
- Koristi se s drugim softverskim alatima za produktivnost.
rezime
- Kompajler je računalni program koji vam pomaže transformirati izvorni kod napisan na jeziku visoke razine u strojni jezik niske razine.
- Ispravnost, brzina kompilacije, očuvanje ispravnog značenja koda neke su važne značajke dizajna prevoditelja.
- Kompajleri su podijeljeni u tri dijela 1) Jednoprolazni kompajleri 2) Dvoprolazni kompajleri i 3) Višeprolazni kompajleri.
- Riječ "kompajler" prvi put je ranih 1950-ih upotrijebila Grace Murray Hopper.
- Koraci za sustav za obradu jezika su: pretprocesor, tumač, asembler, povezivač/učitavač.
- Važni alati za konstrukciju prevoditelja su 1) generatori skenera, 2) sintaksa-3) strojevi za usmjereno prevođenje, 4) generatori parsera, 5) automatski generatori koda.
- Glavni zadatak prevoditelja je provjeriti cijeli program, tako da nema sintaktičkih ili semantičkih pogrešaka.