Handledning i kompilatorkonstruktion:

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 maskinspråk på låg nivå. Den översätter den kod som är skriven på ett programmeringsspråk till ett annat språk utan att ändra kodens innebörd. Kompilatorn gör också slutkoden effektiv som är optimerad för exekveringstid och minnesutrymme.

Kompileringsprocessen omfattar grundläggande översättningsmekanismer och feldetektering. Kompileringsprocessen går igenom lexikalisk, syntax och semantisk analys på framsidan och kodgenerering och optimering på baksidan.

I denna handledning i kompilerdesign får du lära dig

  • Vad är en kompilator?
  • Features of Compilers
  • Types of Compiler
  • Tasks of Compiler
  • History of Compiler
  • Steps for Language processing systems
  • Compiler Construction Tools
  • Why use a Compiler?
  • Application of Compilers

Features of Compilers

  • Correctness
  • Speed of compilation
  • Preserve the correct the meaning of the code
  • The speed of the target code
  • Recognize legal and illegal program constructs
  • Good error reporting/handling
  • Code debugging help

Types of Compiler

Following are the different types of Compiler:

  • Single Pass Compilers
  • Two Pass Compilers
  • Multipass Compilers

Single Pass Compiler

Single Pass Compiler
Single Pass Compiler

In single pass Compiler source code directly transforms into machine code. For example, Pascal language.

Two Pass Compiler

Two Pass Compiler
Two Pass Compiler

Two pass Compiler is divided into two sections, viz.

  1. Front end: It maps legal code into Intermediate Representation (IR).
  2. Back end: It maps IR onto the target machine

The Two pass compiler method also simplifies the retargeting process. It also allows multiple front ends.

Multipass Compilers

Multipass Compilers
Multipass Compilers

Multipass-kompilatorn behandlar källkoden eller syntaxträdet för ett program flera gånger. Den delar upp ett stort program i flera små program och bearbetar dem. Den utvecklar flera mellanliggande koder. Alla dessa multipass tar resultatet av den föregående fasen som indata. Därför kräver de mindre minne. Den är också känd som ”bred kompilator”.

Kompilatorns uppgifter

De viktigaste uppgifterna som utförs av kompilatorn är:

  • Bryter upp källprogrammet i bitar och påtvingar dem en grammatisk struktur
  • Gör det möjligt att konstruera det önskade målprogrammet från mellanrepresentationen och även skapa symboltabellen
  • Kompilerar källkoden och upptäcker fel i den
  • Hanterar lagring av alla variabler och koder.
  • Stöd för separat kompilering
  • Läs, analysera hela programmet och översätt till semantiskt likvärdiga
  • Översätt källkoden till objektkod beroende på maskintyp

Kompilatorns historia

Viktiga landmärken i kompilatorns historia är följande:

  • Värdet ”kompilator” användes för första gången 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 på IBM
  • COBOL var det första programmeringsspråket som kompilerades på flera plattformar 1960
  • Studien av skanning- och parsingfrågorna fortsatte under 1960- och 1970-talen för att ge en komplett lösning

Steg för språkbehandlingssystem

För att känna till begreppet kompilatorer, måste du först förstå några andra verktyg som arbetar med kompilatorer.

Steg för språkbehandlingssystem
Steg för språkbehandlingssystem

  • Preprocessor: Preprocessorn betraktas som en del av kompilatorn. Det är ett verktyg som producerar indata till kompilatorn. Den behandlar makrobearbetning, förstärkning, språkutvidgning osv.
  • Interpreter: En tolk är som en kompilator som översätter högnivåspråk till maskinspråk på låg nivå. Den största skillnaden mellan de båda är att tolkaren läser och omvandlar koden rad för rad. Kompilatorn läser hela koden på en gång och skapar maskinkoden.
  • Assembler: Den översätter assemblerkod till maskinförståeligt språk. Utdragningsresultatet från assembler är känt som en objektfil som är en kombination av maskininstruktioner samt de data som krävs för att lagra dessa instruktioner i minnet.
  • Linker: Linkern hjälper dig att länka och sammanfoga olika objektfiler för att skapa en körbar fil. Alla dessa filer kan ha kompilerats med separata assemblers. En linkers huvuduppgift är att söka efter kallade moduler i ett program och att ta reda på den minnesplats där alla moduler är lagrade.
  • Laddare: Laddaren är en del av operativsystemet som utför uppgifterna att ladda in körbara filer i minnet och köra dem. Den beräknar också storleken på ett program som skapar ytterligare minnesutrymme.
  • Cross-compiler: En tvärkompilator i kompilatorkonstruktion är en plattform som hjälper dig att generera körbar kod.
  • Källkodskompilator: Källkodskompilator: Källkodskompilator ä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.

Kompilerkonstruktionsverktyg

Kompilerkonstruktionsverktyg introducerades i takt med att datorrelaterad teknik spreds över hela världen. De kallas också för kompilator- kompilatorer, kompilator- generatorer eller översättare.

Dessa verktyg använder specifika språk eller algoritmer för att specificera och implementera kompilatorns komponent. Nedan följer exempel på verktyg för kompilatorkonstruktion.

  • Scannergeneratorer: Detta verktyg tar reguljära uttryck som indata. Till exempel LEX för Unix-operativsystemet.
  • Syntaxriktade översättningsmotorer: Dessa programvaruverktyg erbjuder en mellanliggande kod genom att använda parse-trädet. Målet är att associera en eller flera översättningar till varje nod i parseträdet.
  • Parsergeneratorer: En parsergenerator tar en grammatik som indata och genererar automatiskt källkod som kan analysera teckenströmmar med hjälp av en grammatik.
  • Automatiska kodgeneratorer: Tar mellanliggande kod och omvandlar dem till maskinspråk
  • Dataflödesgeneratorer: Det här verktyget är till hjälp för kodoptimering. Här tillhandahålls information av användaren och mellanliggande kod jämförs för att analysera eventuella samband. 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?

  • Compilern verifierar hela programmet, så att det inte finns några syntax- eller semantiska fel
  • Den körbara filen optimeras av kompilern, så den exekveras snabbare
  • Gör det möjligt att skapa interna strukturer i minnet
  • Det finns inget behov av att exekvera programmet på samma maskin som det byggdes
  • Översätt hela programmet till ett annat språk
  • Genererar filer på disk.
  • Länka filerna till ett körbart format
  • Kontrollera syntaxfel och datatyper
  • Hjälper dig att öka din förståelse för språkets semantik
  • Hjälper dig att hantera problem med språkets prestanda
  • Möjlighet till en icke-trivial programming project
  • The techniques used for constructing a compiler can be useful for other purposes as well

Application of Compilers

  • Compiler design helps full implementation Of High-Level Programming Languages
  • Support optimization for Computer Architecture Parallelism
  • Design of New Memory Hierarchies of Machines
  • Widely used for Translating Programs
  • Used with other Software Productivity Tools

Summary

  • A compiler is a computer program which helps you transform source code written in a high-level language into low-level machine language
  • Correctness, kompileringens snabbhet, bevara kodens korrekta innebörd är några viktiga egenskaper i kompilatorns utformning
  • Kompilatorer är indelade i tre delar: 1) kompilatorer med en enda passering, 2) kompilatorer med två passeringar och 3) kompilatorer med flera passeringar
  • ”Kompilator” användes för första gången i början av 1950-talet av Grace Murray Hopper
  • Steg för ett system för språkanvändning är: 1) en kompilator med en enda passering, 2) en kompilator med två passeringar och 3) en kompilator med flera passeringar: Viktiga verktyg för kompilatorkonstruktion är 1) Scannergeneratorer, 2) Syntax-3) riktade översättningsmotorer, 4) Parsergeneratorer, 5) automatiska kodgeneratorer
  • Kompilatorns huvuduppgift är att verifiera hela programmet, så att det inte finns några syntax- eller semantiska fel

.