Mis on kompilaatori disain? Tüübid, Ehitustööriistad, Näide
Mis on kompilaator?
Kompilaator on arvutiprogramm, mis aitab teil kõrgetasemelises keeles kirjutatud lähtekoodi teisendada madala tasemega masinkeeleks. See tõlgib ühes programmeerimiskeeles kirjutatud koodi mõnda teise keelde ilma koodi tähendust muutmata. Kompilaator muudab tõhusaks ka lõppkoodi, mis on optimeeritud täitmisaja ja mäluruumi jaoks.
Koostamisprotsess hõlmab põhilisi tõlkemehhanisme ja vigade tuvastamist. Kompileerimisprotsess läbib esiotsas leksikaal-, süntaksi- ja semantilise analüüsi ning tagaosas koodi genereerimise ja optimeerimise.
Kompilaatorite omadused
- Õigsus
- Koostamise kiirus
- Säilitage koodi õige tähendus
- Sihtkoodi kiirus
- Tunnistage seaduslikke ja ebaseaduslikke programmikonstruktsioone
- Hea veateade/käsitlus
- Abi koodide silumisel
Kompilaatorite tüübid
Järgmised on erinevat tüüpi kompilaatorid:
- Ühekäigulised kompilaatorid
- Kaks passi kompilaatorit
- Multipass kompilaatorid
Ühepääsme kompilaator

Ühekordsel läbimisel muundub kompilaatori lähtekood otse masinkoodiks. Näiteks Pascali keel.
Kahekäiguline kompilaator

Kahekäiguline kompilaator on jagatud kaheks osaks, st.
- Esiots: See kaardistab juriidilise koodi vahepealseks esinduseks (IR).
- Tagumine ots: See kaardistab IR-i sihtmasinale
Kahekäigulise kompilaatori meetod lihtsustab ka uuesti sihtimise protsessi. See võimaldab ka mitut esiotsa.
Multipass kompilaatorid

Mitmekäiguline kompilaator töötleb programmi lähtekoodi või süntaksipuud mitu korda. See jagas suure programmi mitmeks väikeseks programmiks ja töötles neid. See arendab mitu vahekoodi. Kõik need multipass võtavad sisendiks eelmise faasi väljundi. Nii et see nõuab vähem mälu. Seda tuntakse ka kui "laia kompilaatorit".
Kompilaatori ülesanded
Peamised kompilaatori ülesanded on järgmised:
- Jagab lähteprogrammi tükkideks ja kehtestab neile grammatilise struktuuri
- Võimaldab konstrueerida vahepealsest esitusest soovitud sihtprogrammi ja luua ka sümbolitabeli
- Kompileerib lähtekoodi ja tuvastab selles vigu
- Hallake kõigi muutujate ja koodide salvestamist.
- Eraldi koostamise tugi
- Lugege, analüüsige kogu programmi ja tõlkige semantiliselt samaväärseks
- Lähtekoodi tõlkimine objektkoodiks olenevalt masina tüübist
Kompilaatori ajalugu
Kompilaatori ajaloo oluline maamärk on järgmine:
- Sõna "koostaja" kasutas esmakordselt 1950. aastate alguses Grace Murray Hopper.
- Esimese kompilaatori koostas John Backum ja tema rühm aastatel 1954–1957 kl. IBM.
- COBOL oli esimene programmeerimiskeel mis koostati mitmel platvormil 1960. aastal
- Täieliku lahenduse leidmiseks uuriti skannimise ja parsimise probleeme 1960. ja 1970. aastatel.
Keeletöötlussüsteemide sammud
Enne kompilaatorite kontseptsiooni tundmaõppimist peate kõigepealt mõistma mõnda muud tööriista, mis kompilaatoritega töötavad.

- Eeltöötleja: eeltöötlejat peetakse kompilaatori osaks. See on tööriist, mis toodab kompilaatorile sisendit. See käsitleb makrotöötlust, suurendamist, keelelaiendust jne.
- tõlk: Tõlk on nagu kompilaator, mis tõlgib kõrgetasemelise keele madala taseme masinakeeleks. Peamine erinevus mõlema vahel on see, et tõlk loeb ja teisendab koodi rida rea haaval. Kompilaator loeb kogu koodi korraga ja loob masinkoodi.
- Assembler: see tõlgib montaažikeele koodi masinarusaadavasse keelde. Assembleri väljundtulemust tuntakse objektifailina, mis on masinakäskude ja nende käskude mällu salvestamiseks vajalike andmete kombinatsioon.
- Lingid: linker aitab teil käivitatava faili loomiseks linkida ja liita erinevaid objektifaile. Kõik need failid võivad olla kompileeritud eraldi komplekteerijatega. Linkeri põhiülesanne on otsida programmis kutsutud mooduleid ja leida mälukoht, kuhu kõik moodulid on salvestatud.
- laadur: Laadija on OS-i osa, mis täidab käivitatavate failide mällu laadimise ja nende käivitamise ülesandeid. Samuti arvutab see välja täiendava mäluruumi loova programmi suuruse.
- Ristkompilaator: Kompilaatori disaini ristkompilaator on platvorm, mis aitab teil käivitatavat koodi genereerida.
- Allikast allikasse kompilaator: allikast allikani kompilaator on termin, mida kasutatakse siis, kui ühe programmeerimiskeele lähtekood tõlgitakse teise keele allikaks.
Kompilaatori ehitustööriistad
Kompilaatorite ehitustööriistad võeti kasutusele, kui arvutiga seotud tehnoloogiad levisid üle maailma. Neid tuntakse ka kui kompilaator-kompilaatoreid, kompilaator-generaatoreid või tõlkijaid.
Need tööriistad kasutavad kompilaatori komponendi täpsustamiseks ja rakendamiseks kindlat keelt või algoritmi. Järgnevalt on toodud näide kompilaatori ehitustööriistadest.
- Skänneri generaatorid: see tööriist võtab sisendiks regulaaravaldised. Näiteks LEX Unixi jaoks Operating System.
- Süntaksipõhised tõlkemootorid: Need tarkvaravahendid pakkuda vahekoodi, kasutades parsipuud. Selle eesmärk on seostada üks või mitu tõlget parsipuu iga sõlmega.
- Parser generaatorid: Parserigeneraator võtab sisendiks grammatika ja genereerib automaatselt lähtekoodi, mis suudab grammatika abil tähevooge sõeluda.
- Automaatsed koodigeneraatorid: võtab vahepealse koodi ja teisendab need masinakeeleks.
- Andmevoo mootorid: see tööriist on abiks koodi optimeerimisel. Siin annab teavet kasutaja ja mis tahes seose analüüsimiseks võrreldakse vahepealset koodi. Seda tuntakse ka kui andmevoo analüüsi. See aitab teil teada saada, kuidas väärtusi edastatakse ühest programmi osast teise.
Miks kasutada kompilaatorit?
- Kompilaator kontrollib kogu programmi, seega pole süntaksi- ega semantilisi vigu.
- Kompilaator optimeerib käivitatava faili, nii et see käivitatakse kiiremini.
- Võimaldab luua mälus sisemist struktuuri.
- Programmi pole vaja käivitada samas masinas, kus see ehitati.
- Tõlgi kogu programm teistesse keeltesse.
- Kettale failide genereerimine.
- Linkige failid käivitatavasse vormingusse.
- Kontrollige süntaksivigu ja andmetüüpe.
- Aitab parandada keele semantika mõistmist.
- Aitab lahendada keeleoskusprobleeme.
- Võimalus mittetriviaalseks programmeerimisprojektiks.
- Kompilaatori koostamiseks kasutatavad tehnikad võivad olla kasulikud ka muudel eesmärkidel.
Kompilaatorite rakendus
- Kompilaatori disain aitab kõrgetasemelisi programmeerimiskeeli täielikult rakendada.
- Toetage arvuti optimeerimist Architektuur Parallelism.
- Masinate uute mäluhierarhiate kujundamine.
- Kasutatakse laialdaselt programmide tõlkimiseks.
- Kasutatakse koos teiste tarkvara tootlikkuse tööriistadega.
kokkuvõte
- Kompilaator on arvutiprogramm, mis aitab teil kõrgetasemelises keeles kirjutatud lähtekoodi teisendada madala tasemega masinkeeleks.
- Korrektsus, koostamise kiirus, koodi õige tähenduse säilitamine on mõned kompilaatori disaini olulised tunnused.
- Kompilaatorid jagunevad kolmeks osaks: 1) ühe läbipääsuga kompilaatorid, 2) kahekäigulised kompilaatorid ja 3) mitmekäigulised kompilaatorid.
- "Koostaja" oli sõna, mida 1950. aastate alguses kasutas esmakordselt Grace Murray Hopper.
- Keeletöötlussüsteemi etapid on järgmised: eeltöötleja, tõlk, kokkupanija, linker/laadija.
- Olulised kompilaatori ehitustööriistad on 1) skanneri generaatorid, 2) süntaks-3) suunatud tõlkemootorid, 4) parser generaatorid, 5) automaatsed koodigeneraatorid.
- Kompilaatori põhiülesanne on kontrollida kogu programmi, nii et seal pole süntaksi- ega semantilisi vigu.

