Vad är en kompilatordesign? Typer, konstruktionsverktyg, exempel
Vad är en kompilator?
En kompilator är ett datorprogram som hjälper dig att omvandla källkod skriven på ett högnivåspråk till lågnivå maskinspråk. Den översätter koden skriven på ett programmeringsspråk till något annat språk utan att ändra innebörden av koden. Kompilatorn gör också slutkoden effektiv, som är optimerad för körningstid och minnesutrymme.
Kompileringsprocessen inkluderar grundläggande översättningsmekanismer och feldetektering. Kompilatorprocessen går igenom lexikal, syntax och semantisk analys i front-end och kodgenerering och optimering i back-end.
Funktioner hos kompilatorer
- korrekt~~POS=TRUNC
- Sammanställningshastighet
- Bevara den korrekta innebörden av koden
- Målkodens hastighet
- Känn igen lagliga och olagliga programkonstruktioner
- Bra felrapportering/hantering
- Kodfelsökningshjälp
Typer av kompilator
Följande är de olika typerna av kompilator:
- Single Pass-kompilatorer
- Två pass kompilatorer
- Multipass-kompilatorer
Single Pass-kompilator
I en gång omvandlas kompilatorns källkod direkt till maskinkod. Till exempel Pascal-språket.
Två pass kompilator
Två pass Compiler är uppdelad i två sektioner, dvs.
- Framdel: Den mappar juridisk kod till Intermediate Representation (IR).
- Baksidan: Den mappar IR på målmaskinen
Två pass kompilatormetoden förenklar också ominriktningsprocessen. Det tillåter också flera frontends.
Multipass-kompilatorer
Multipass-kompilatorn bearbetar källkoden eller syntaxträdet för ett program flera gånger. Den delade upp ett stort program i flera små program och bearbetade dem. Den utvecklar flera mellankoder. Alla dessa multipass tar utgången från föregående fas som en ingång. Så det kräver mindre minne. Det är också känt som "Wide Compiler".
Uppgifter för kompilator
De huvudsakliga uppgifterna som utförs av kompilatorn är:
- Bryter upp källprogrammet i bitar och lägger på grammatisk struktur på dem
- Låter dig konstruera det önskade målprogrammet från den mellanliggande representationen och även skapa symboltabellen
- Kompilerar källkod och upptäcker fel i den
- Hantera lagring av alla variabler och koder.
- Stöd för separat kompilering
- Läs, analysera hela programmet och översätt till semantiskt likvärdigt
- Översätta källkoden till objektkod beroende på typ av maskin
Kompilatorns historia
Viktigt landmärke för kompilatorns historia är följande:
- Ordet "kompilator" användes först i början av 1950-talet av Grace Murray Hopper.
- Den första kompilatorn byggdes av John Backum och hans grupp mellan 1954 och 1957 kl IBM.
- COBOL var först programmeringsspråk som kompilerades på flera plattformar 1960
- Studiet av skannings- och analysproblemen fortsatte på 1960- och 1970-talen för att ge en komplett lösning.
Steg för språkbehandlingssystem
Innan du känner till begreppet kompilatorer måste du först förstå några andra verktyg som fungerar med kompilatorer.
- Förprocessor: Förprocessorn betraktas som en del av kompilatorn. Det är ett verktyg som producerar input för kompilatorn. Det handlar om makrobearbetning, förstärkning, språkutvidgning, etc.
- Tolk: En tolk är som Compiler som översätter högnivåspråk till lågnivå maskinspråk. Huvudskillnaden mellan båda är att tolken läser och transformerar kod rad för rad. Kompilatorn läser hela koden på en gång och skapar maskinkoden.
- Assemblerare: Den översätter assemblerspråkskod till maskinförståeligt språk. Utdataresultatet från assembler är känt som en objektfil som är en kombination av maskininstruktioner såväl som de data som krävs för att lagra dessa instruktioner i minnet.
- länkar: Länken hjälper dig att länka och slå samman olika objektfiler för att skapa en körbar fil. Alla dessa filer kan ha kompilerats med separata assemblers. Huvuduppgiften för en länkare är att söka efter anropade moduler i ett program och att ta reda på minnesplatsen där alla moduler är lagrade.
- Loader: Laddaren är en del av operativsystemet, som utför uppgifterna att ladda körbara filer till minnet och köra dem. Den beräknar också storleken på ett program vilket skapar ytterligare minnesutrymme.
- Korskompilator: En korskompilator i kompilatordesign är en plattform som hjälper dig att generera körbar kod.
- Källa-till-källa-kompilator: Källa till källkompilator är en term som används när källkoden för ett programmeringsspråk översätts till källkoden för ett annat språk.
Kompilatorkonstruktionsverktyg
Konstruktionsverktyg för kompilatorer introducerades som datorrelaterade tekniker spridda över hela världen. De är också kända som en kompilator-kompilator, kompilator-generator eller översättare.
Dessa verktyg använder ett specifikt språk eller en algoritm för att specificera och implementera kompilatorns komponent. Följande är exemplet på kompilatorkonstruktionsverktyg.
- Skannergeneratorer: Det här verktyget tar reguljära uttryck som indata. Till exempel LEX för Unix Operating System.
- Syntaxstyrda översättningsmotorer: Dessa programverktyg erbjuda en mellankod genom att använda analysträdet. Den har som mål att associera en eller flera översättningar med varje nod i analysträdet.
- Parsergeneratorer: En parsergenerator tar en grammatik som indata och genererar automatiskt källkod som kan analysera strömmar av tecken med hjälp av en grammatik.
- Automatiska kodgeneratorer: Tar mellankod och konverterar dem till maskinspråk.
- Dataflödesmotorer: Det här verktyget är användbart för kodoptimering. Här tillhandahålls information av användaren och mellankod jämförs för att analysera vilken relation som helst. Det är också känt som dataflödesanalys. Det hjälper dig att ta reda på hur värden överförs från en del av programmet till en annan del.
Varför använda en kompilator?
- Kompilatorn verifierar hela programmet, så det finns inga syntax- eller semantiska fel.
- Den körbara filen är optimerad av kompilatorn, så den körs snabbare.
- Låter dig skapa intern struktur i minnet.
- Det finns inget behov av att köra programmet på samma maskin som det byggdes.
- Översätt hela programmet till ett annat språk.
- Skapa filer på disken.
- Länka filerna till ett körbart format.
- Kontrollera efter syntaxfel och datatyper.
- Hjälper dig att förbättra din förståelse för språksemantik.
- Hjälper till att hantera problem med språkprestanda.
- Möjlighet till ett icke-trivialt programmeringsprojekt.
- Teknikerna som används för att konstruera en kompilator kan också vara användbara för andra ändamål.
Tillämpning av kompilatorer
- Kompilatordesign hjälper till att implementera högnivåprogrammeringsspråk fullt ut.
- Stöd optimering för dator Architecture Parallellism.
- Design av nya minneshierarkier av maskiner.
- Används ofta för att översätta program.
- Används med andra programvaruproduktivitetsverktyg.
Sammanfattning
- En kompilator är ett datorprogram som hjälper dig att omvandla källkod skriven på ett högnivåspråk till lågnivå maskinspråk.
- Korrekthet, kompileringshastighet, bevara den korrekta innebörden av koden är några viktiga funktioner i kompilatordesignen.
- Kompilatorer är uppdelade i tre delar 1) Single Pass Compilers 2) Two Pass Compilers och 3) Multipass Compilers.
- "Kompilatorn" var ordet som användes först i början av 1950-talet av Grace Murray Hopper.
- Steg för språkbehandlingssystem är: Förbehandlare, Tolk, Assembler, Linker/Loader.
- Viktiga kompilatorkonstruktionsverktyg är 1) Scannergeneratorer, 2)Syntax-3) riktade översättningsmotorer, 4) Parsergeneratorer, 5) Automatiska kodgeneratorer.
- Kompilatorns huvuduppgift är att verifiera hela programmet, så det finns inga syntax- eller semantiska fel.