Co je to návrh kompilátoru? Typy, Stavební nářadí, Příklad
Co je to kompilátor?
Kompilátor je počítačový program, který vám pomůže transformovat zdrojový kód napsaný v jazyce vysoké úrovně na jazyk stroje na nízké úrovni. Překládá kód napsaný v jednom programovacím jazyce do jiného jazyka, aniž by se změnil význam kódu. Kompilátor také zefektivňuje koncový kód, který je optimalizován pro dobu provádění a paměťový prostor.
Proces kompilace zahrnuje základní mechanismy překladu a detekci chyb. Proces kompilátoru prochází lexikální, syntaktickou a sémantickou analýzou na front-endu a generováním kódu a optimalizací na back-endu.
Vlastnosti kompilátorů
- Správnost
- Rychlost kompilace
- Zachovejte správný význam kódu
- Rychlost cílového kódu
- Rozpoznat legální a nelegální programové konstrukce
- Dobré hlášení/zpracování chyb
- Nápověda k ladění kódu
Typy kompilátorů
Níže jsou uvedeny různé typy kompilátorů:
- Jednoprůchodové kompilátory
- Dvouprůchodové kompilátory
- Víceprůchodové kompilátory
Jednoprůchodový kompilátor

V jediném průchodu se zdrojový kód kompilátoru přímo transformuje na strojový kód. Například jazyk Pascal.
Dvouprůchodový kompilátor

Dvouprůchodový kompilátor je rozdělen do dvou sekcí, viz.
- Přední část: Mapuje právní řád do Intermediate Representation (IR).
- Zadní konec: Mapuje IR na cílový stroj
Metoda dvouprůchodového kompilátoru také zjednodušuje proces přesměrování. Umožňuje také více předních konců.
Víceprůchodové kompilátory

Víceprůchodový kompilátor zpracuje zdrojový kód nebo strom syntaxe programu několikrát. Rozdělil velký program na několik malých programů a zpracoval je. Vyvíjí několik přechodných kódů. Všechny tyto multipassy berou jako vstup výstup předchozí fáze. Vyžaduje tedy méně paměti. Je také známý jako 'Wide Compiler'.
Úkoly kompilátoru
Hlavní úkoly prováděné překladačem jsou:
- Rozdělí zdrojový program na kousky a vloží jim gramatickou strukturu
- Umožňuje sestavit požadovaný cílový program z přechodné reprezentace a také vytvořit tabulku symbolů
- Kompiluje zdrojový kód a detekuje v něm chyby
- Spravujte ukládání všech proměnných a kódů.
- Podpora samostatné kompilace
- Přečtěte si, analyzujte celý program a přeložte do sémanticky ekvivalentu
- Překlad zdrojového kódu do objektového kódu v závislosti na typu stroje
Historie kompilátoru
Důležitým mezníkem v historii kompilátoru je následující:
- Slovo „kompilátor“ poprvé použila na počátku 1950. let Grace Murray Hopperová.
- První kompilátor sestavil John Backum a jeho skupina v letech 1954 až 1957 IBM.
- COBOL byl první programovací jazyk který byl sestaven na více platformách v roce 1960
- Studium problémů skenování a analýzy probíhalo v 1960. a 1970. letech XNUMX. století s cílem poskytnout kompletní řešení.
Kroky pro systémy zpracování jazyka
Než se seznámíte s konceptem kompilátorů, musíte nejprve porozumět několika dalším nástrojům, které pracují s kompilátory.

- Preprocesor: Preprocesor je považován za součást kompilátoru. Je to nástroj, který vytváří vstup pro kompilátor. Zabývá se zpracováním maker, augmentací, rozšířením jazyka atp.
- Tlumočník: Tlumočník je jako kompilátor, který překládá jazyk vysoké úrovně do strojového jazyka nízké úrovně. Hlavní rozdíl mezi oběma je v tom, že interpret čte a transformuje kód řádek po řádku. Kompilátor načte celý kód najednou a vytvoří strojový kód.
- Assembler: Překládá kód assembleru do strojově srozumitelného jazyka. Výstupní výsledek assembleru je známý jako objektový soubor, který je kombinací strojové instrukce a dat potřebných k uložení těchto instrukcí do paměti.
- Odkazy: Linker vám pomůže propojit a sloučit různé objektové soubory za účelem vytvoření spustitelného souboru. Všechny tyto soubory mohly být zkompilovány pomocí samostatných assemblerů. Hlavním úkolem linkeru je vyhledání volaných modulů v programu a zjištění paměťového místa, kde jsou všechny moduly uloženy.
- Loader: Zavaděč je část operačního systému, která provádí úlohy načítání spustitelných souborů do paměti a jejich spouštění. Vypočítává také velikost programu, který vytváří další paměťový prostor.
- Křížový kompilátor: Křížový kompilátor v designu kompilátoru je platforma, která vám pomáhá generovat spustitelný kód.
- Překladač zdroje ke zdroji: Source to source kompilátor je termín používaný při překladu zdrojového kódu jednoho programovacího jazyka do zdrojového kódu jiného jazyka.
Stavební nástroje kompilátoru
Konstrukční nástroje kompilátorů byly představeny s tím, jak se počítačové technologie rozšířily po celém světě. Jsou také známé jako překladač-překladač, překladač-generátor nebo překladač.
Tyto nástroje používají specifický jazyk nebo algoritmus pro specifikaci a implementaci komponenty kompilátoru. Následuje příklad konstrukčních nástrojů kompilátoru.
- Generátory skenerů: Tento nástroj bere jako vstup regulární výrazy. Například LEX pro Unix Operating systému.
- Překladatelské stroje řízené syntaxí: Tyhle softwarové nástroje nabídnout přechodný kód pomocí stromu analýzy. Jeho cílem je přiřadit jeden nebo více překladů ke každému uzlu stromu analýzy.
- Generátory analyzátorů: Generátor analyzátoru bere gramatiku jako vstup a automaticky generuje zdrojový kód, který dokáže analyzovat proudy znaků pomocí gramatiky.
- Automatické generátory kódů: Vezme mezikód a převede je do strojového jazyka.
- Motory toku dat: Tento nástroj je užitečný pro optimalizaci kódu. Zde jsou informace poskytovány uživatelem a mezilehlý kód je porovnáván za účelem analýzy jakéhokoli vztahu. Je také známá jako analýza toku dat. Pomůže vám zjistit, jak se hodnoty přenášejí z jedné části programu do druhé.
Proč používat kompilátor?
- Kompilátor ověřuje celý program, takže se nevyskytují žádné syntaktické nebo sémantické chyby.
- Spustitelný soubor je optimalizován kompilátorem, takže se spouští rychleji.
- Umožňuje vytvořit vnitřní strukturu v paměti.
- Není potřeba spouštět program na stejném počítači, na kterém byl vytvořen.
- Přeložte celý program do jiného jazyka.
- Generování souborů na disku.
- Propojte soubory do spustitelného formátu.
- Zkontrolujte syntaktické chyby a typy dat.
- Pomůže vám zlepšit porozumění sémantice jazyka.
- Pomáhá řešit problémy s jazykovým výkonem.
- Příležitost pro netriviální programovací projekt.
- Techniky používané pro konstrukci kompilátoru mohou být užitečné i pro jiné účely.
Aplikace kompilátorů
- Návrh kompilátoru pomáhá plné implementaci programovacích jazyků na vysoké úrovni.
- Podpora optimalizace pro počítač Architecture Paralelismus.
- Návrh nových paměťových hierarchií strojů.
- Široce se používá pro překládání programů.
- Používá se s dalšími nástroji softwarové produktivity.
Shrnutí
- Kompilátor je počítačový program, který vám pomůže transformovat zdrojový kód napsaný v jazyce vysoké úrovně na jazyk stroje na nízké úrovni.
- Správnost, rychlost kompilace, zachování správného významu kódu jsou některé důležité vlastnosti návrhu kompilátoru.
- Kompilátory jsou rozděleny do tří částí 1) Jednoprůchodové kompilátory, 2) Dvouprůchodové kompilátory a 3) Víceprůchodové kompilátory.
- Slovo „kompilátor“ poprvé použila na počátku 1950. let Grace Murray Hopperová.
- Kroky pro systém zpracování jazyka jsou: Preprocessor, Interpreter, Assembler, Linker/Loader.
- Důležité nástroje pro konstrukci kompilátoru jsou 1) generátory skenerů, 2) syntaxe-3) řízené překladové motory, 4) generátory analyzátorů, 5) generátory automatických kódů.
- Hlavním úkolem kompilátoru je ověřit celý program, takže nedochází k syntaktickým ani sémantickým chybám.

