Hva er et kompilatordesign? Typer, konstruksjonsverktøy, eksempel
Hva er en kompilator?
En kompilator er et dataprogram som hjelper deg å transformere kildekode skrevet på et høyt nivå språk til et lavt nivå maskinspråk. Den oversetter koden skrevet på ett programmeringsspråk til et annet språk uten å endre betydningen av koden. Kompilatoren gjør også sluttkoden effektiv, som er optimalisert for utførelsestid og minneplass.
Kompileringsprosessen inkluderer grunnleggende oversettelsesmekanismer og feildeteksjon. Kompilatorprosessen går gjennom leksikalsk, syntaks- og semantisk analyse i frontenden og kodegenerering og -optimalisering i bakenden.
Funksjoner av kompilatorer
- Korrekthet
- Hastighet for kompilering
- Bevar den riktige betydningen av koden
- Hastigheten til målkoden
- Gjenkjenne lovlige og ulovlige programkonstruksjoner
- God feilmelding/håndtering
- Kodefeilsøkingshjelp
Typer kompilatorer
Følgende er de forskjellige typene kompilatorer:
- Single Pass-kompilatorer
- To Pass-kompilatorer
- Multipass-kompilatorer
Single Pass Compiler

I enkeltpass forvandles kompilatorens kildekode direkte til maskinkode. For eksempel Pascal-språket.
To pass kompilator

Two pass Compiler er delt inn i to seksjoner, nemlig.
- Frontend: Den kartlegger juridisk kode til mellomrepresentasjon (IR).
- Baksiden: Den kartlegger IR til målmaskinen
Two pass-kompilatormetoden forenkler også retargeting-prosessen. Den tillater også flere frontender.
Multipass-kompilatorer

Multipass-kompilatoren behandler kildekoden eller syntakstreet til et program flere ganger. Den delte et stort program inn i flere små programmer og behandler dem. Den utvikler flere mellomkoder. Alle disse multipass tar utgangen fra forrige fase som en inngang. Så det krever mindre minne. Det er også kjent som 'Wide Compiler'.
Oppgaver til kompilator
Hovedoppgavene som utføres av kompilatoren er:
- Bryter opp kildeprogrammet i biter og pålegger dem en grammatisk struktur
- Lar deg konstruere ønsket målprogram fra mellomrepresentasjonen og også lage symboltabellen
- Kompilerer kildekode og oppdager feil i den
- Administrer lagring av alle variabler og koder.
- Støtte for separat kompilering
- Les, analyser hele programmet og oversett til semantisk ekvivalent
- Oversettelse av kildekoden til objektkode avhengig av maskintypen
Historien til kompilatoren
Viktig landemerke for kompilatorens historie er som følger:
- Ordet "kompilator" ble først brukt på begynnelsen av 1950-tallet av Grace Murray Hopper.
- Den første kompilatoren ble bygget av John Backum og hans gruppe mellom 1954 og 1957 kl IBM.
- COBOL var den første programmeringsspråk som ble kompilert på flere plattformer i 1960
- Studiet av skannings- og analyseproblemene ble forfulgt på 1960- og 1970-tallet for å gi en komplett løsning.
Trinn for språkbehandlingssystemer
Før du vet om konseptet med kompilatorer, må du først forstå noen andre verktøy som fungerer med kompilatorer.

- Forbehandler: Forbehandleren anses som en del av kompilatoren. Det er et verktøy som produserer input for Compiler. Den tar for seg makrobehandling, utvidelse, språkutvidelse, etc.
- Tolk: En tolk er som Compiler som oversetter høynivåspråk til lavnivå maskinspråk. Hovedforskjellen mellom begge er at tolken leser og transformerer kode linje for linje. Kompilatoren leser hele koden på en gang og lager maskinkoden.
- assembler: Den oversetter assembly-språkkode til maskinforståelig språk. Utdataresultatet fra assembler er kjent som en objektfil som er en kombinasjon av maskininstruksjoner så vel som dataene som kreves for å lagre disse instruksjonene i minnet.
- linker: Linkeren hjelper deg med å koble sammen og slå sammen ulike objektfiler for å lage en kjørbar fil. Alle disse filene kan ha blitt kompilert med separate samlere. Hovedoppgaven til en linker er å søke etter kalte moduler i et program og finne ut hvor alle modulene er lagret.
- Loader: Lasteren er en del av operativsystemet, som utfører oppgavene med å laste inn kjørbare filer til minnet og kjøre dem. Den beregner også størrelsen på et program som skaper ekstra minneplass.
- Krysskompilator: En krysskompilator i kompilatordesign er en plattform som hjelper deg med å generere kjørbar kode.
- Kilde-til-kilde kompilator: Kilde til kilde kompilator er et begrep som brukes når kildekoden til ett programmeringsspråk oversettes til kilden til et annet språk.
Kompilatorkonstruksjonsverktøy
Kompilatorkonstruksjonsverktøy ble introdusert som datarelaterte teknologier spredt over hele verden. De er også kjent som en kompilator-kompilator, kompilator-generator eller oversetter.
Disse verktøyene bruker spesifikt språk eller algoritme for å spesifisere og implementere kompilatorens komponent. Følgende er eksemplet på kompilatorkonstruksjonsverktøy.
- Skannergeneratorer: Dette verktøyet tar regulære uttrykk som input. For eksempel LEX for Unix Operating System.
- Syntaksstyrte oversettelsesmotorer: Disse programvareverktøy tilby en mellomkode ved å bruke analysetreet. Den har et mål om å knytte en eller flere oversettelser til hver node i analysetreet.
- Parsergeneratorer: En parsergenerator tar en grammatikk som input og genererer automatisk kildekode som kan analysere strømmer av tegn ved hjelp av en grammatikk.
- Automatiske kodegeneratorer: Tar mellomkode og konverterer dem til maskinspråk.
- Dataflytmotorer: Dette verktøyet er nyttig for kodeoptimalisering. Her leveres informasjon fra brukeren, og mellomkode sammenlignes for å analysere enhver relasjon. Det er også kjent som dataflytanalyse. Den hjelper deg å finne ut hvordan verdier overføres fra en del av programmet til en annen del.
Hvorfor bruke en kompilator?
- Kompilatoren verifiserer hele programmet, så det er ingen syntaks eller semantiske feil.
- Den kjørbare filen er optimalisert av kompilatoren, så den kjøres raskere.
- Lar deg lage intern struktur i minnet.
- Det er ikke nødvendig å kjøre programmet på samme maskin som det ble bygget.
- Oversett hele programmet til et annet språk.
- Generer filer på disk.
- Koble filene til et kjørbart format.
- Se etter syntaksfeil og datatyper.
- Hjelper deg med å forbedre forståelsen av språksemantikk.
- Hjelper med å håndtere problemer med språkytelse.
- Mulighet for et ikke-trivielt programmeringsprosjekt.
- Teknikkene som brukes for å konstruere en kompilator kan også være nyttige for andre formål.
Anvendelse av kompilatorer
- Kompilatordesign hjelper full implementering av høynivåprogrammeringsspråk.
- Støtte optimalisering for datamaskin Architecture Parallelisme.
- Design av nye minnehierarkier av maskiner.
- Mye brukt for å oversette programmer.
- Brukes med andre programvareproduktivitetsverktøy.
Sammendrag
- En kompilator er et dataprogram som hjelper deg å transformere kildekode skrevet på et høyt nivå språk til et lavt nivå maskinspråk.
- Korrekthet, hastighet på kompilering, bevar den riktige betydningen av koden er noen viktige funksjoner ved kompilatordesign.
- Kompilatorer er delt inn i tre deler: 1) Single Pass-kompilatorer 2) To Pass-kompilatorer og 3) Multipass-kompilatorer.
- "Kompilatoren" var ordet først brukt på begynnelsen av 1950-tallet av Grace Murray Hopper.
- Trinn for språkbehandlingssystemet er: Preprosessor, Tolk, Assembler, Linker/Loader.
- Viktige kompilatorkonstruksjonsverktøy er 1) Skannergeneratorer, 2)Syntax-3) rettet oversettelsesmotorer, 4) Parsergeneratorer, 5) Automatiske kodegeneratorer.
- Hovedoppgaven til kompilatoren er å verifisere hele programmet, så det er ingen syntaks eller semantiske feil.

