Mi az a fordítóterv? Típusok, Építőeszközök, Példa

Mi az a fordító?

A fordító egy számítógépes program, amely segít a magas szintű nyelven írt forráskód alacsony szintű gépi nyelvvé alakításában. Lefordítja az egyik programozási nyelven írt kódot egy másik nyelvre anélkül, hogy megváltoztatná a kód jelentését. A fordító a végkódot is hatékonysá teszi, amely a végrehajtási időre és a memóriaterületre van optimalizálva.

A fordítási folyamat magában foglalja az alapvető fordítási mechanizmusokat és a hibaészlelést. A fordítói folyamat lexikai, szintaktikai és szemantikai elemzésen megy keresztül az előtérben, valamint kódgeneráláson és optimalizáláson a háttérben.

fordítóprogram

A fordítók jellemzői

  • helyessége
  • Az összeállítás sebessége
  • Őrizze meg a kód helyes jelentését
  • A célkód sebessége
  • A legális és illegális programkonstrukciók felismerése
  • Jó hibajelentés/kezelés
  • Segítség a kódhibakereséshez

A fordítóprogramok típusai

Az alábbiakban felsoroljuk a különböző típusú fordítóprogramokat:

  • Egymenetes fordítók
  • Két Pass fordító
  • Multipass fordítók

Egymenetes fordító

Egymenetes fordító
Egymenetes fordító

Az egymenetes fordítói forráskód közvetlenül gépi kóddá alakul. Például Pascal nyelv.

Két lépéses fordító

Két lépéses fordító
Két lépéses fordító

A kétmenetes fordítóprogram két részre oszlik, ti.

  1. Előlap: A jogi kódot az Intermediate Representation-ba (IR) képezi le.
  2. Hátsó vég: Az IR-t leképezi a célgépre

A kétmenetes fordítómódszer az újracélzási folyamatot is leegyszerűsíti. Több előlapot is lehetővé tesz.

Multipass fordítók

Multipass fordítók
Multipass fordítók

A többlépéses fordító többször feldolgozza egy program forráskódját vagy szintaktikai fáját. Egy nagy programot több kis programra osztott, és feldolgozta azokat. Több köztes kódot fejleszt. Mindezek a többszörös átmenetek az előző fázis kimenetét veszik bemenetként. Így kevesebb memóriát igényel. „Wide Compiler” néven is ismert.

A fordító feladatai

A fordító által végzett főbb feladatok a következők:

  • A forrásprogramot darabokra bontja, és nyelvtani szerkezetet ír rájuk
  • Lehetővé teszi a kívánt célprogram összeállítását a közbenső ábrázolásból, valamint a szimbólumtábla létrehozását
  • Lefordítja a forráskódot, és észleli a benne lévő hibákat
  • Az összes változó és kód tárolásának kezelése.
  • Külön összeállítás támogatása
  • Olvassa el, elemezze a teljes programot, és fordítsa le szemantikailag egyenértékűre
  • A forráskód lefordítása objektumkódba a gép típusától függően

A fordító története

A Compiler történetének fontos mérföldköve a következő:

  • A „fordító” szót először az 1950-es évek elején Grace Murray Hopper használta.
  • Az első fordítót John Backum és csoportja készítette 1954 és 1957 között. IBM.
  • COBOL volt az első programozási nyelv amelyet 1960-ban több platformon is összeállítottak
  • A szkennelési és elemzési problémák tanulmányozását az 1960-as és 1970-es években folytatták a teljes megoldás érdekében.

A nyelvfeldolgozó rendszerek lépései

Mielőtt megismerné a fordítók fogalmát, először is meg kell értenie néhány egyéb, a fordítókkal működő eszközt.

Nyelvfeldolgozó rendszerek lépései
A nyelvfeldolgozó rendszerek lépései
  • Előfeldolgozó: Az előfeldolgozót a fordító részének tekintjük. Ez egy olyan eszköz, amely bemenetet állít elő a Compiler számára. Makrófeldolgozással, kiegészítéssel, nyelvkiterjesztéssel stb. foglalkozik.
  • Tolmács: A tolmács olyan, mint a fordító, amely a magas szintű nyelvet alacsony szintű gépi nyelvre fordítja. A fő különbség a kettő között az, hogy az értelmező soronként olvassa és alakítja át a kódot. A fordító egyszerre olvassa be a teljes kódot, és létrehozza a gépi kódot.
  • Assembler: Az assembly nyelvi kódot gépileg érthető nyelvre fordítja. Az assembler kimeneti eredménye egy objektumfájl, amely gépi utasítások, valamint ezen utasítások memóriában tárolásához szükséges adatok kombinációja.
  • Linker: A linker segít különböző objektumfájlok összekapcsolásában és egyesítésében végrehajtható fájl létrehozásához. Lehetséges, hogy ezeket a fájlokat külön összeszerelőkkel fordították le. A linker fő feladata az, hogy egy programban megkeresse a hívott modulokat, és megkeresse azt a memóriahelyet, ahol az összes modul tárolva van.
  • loader: A betöltő az operációs rendszer része, amely végrehajtja a futtatható fájlok memóriába való betöltését és futtatását. Kiszámolja a program méretét is, amely további memóriaterületet hoz létre.
  • Keresztfordító: A fordítótervezésben a keresztfordító egy olyan platform, amely segít futtatható kód létrehozásában.
  • Forrásról forrásra fordító: A forrásról forrásra fordító egy kifejezés, amelyet akkor használnak, ha egy programozási nyelv forráskódját egy másik nyelv forráskódjára fordítják.

Fordító építési eszközök

A fordítókészítő eszközöket a számítógéppel kapcsolatos technológiák világszerte elterjedésével vezették be. Fordító-fordítóként, fordító-generátorként vagy fordítóként is ismertek.

Ezek az eszközök meghatározott nyelvet vagy algoritmust használnak a fordító összetevőjének megadásához és megvalósításához. Az alábbiakban a fordító-építő eszközök példáját mutatjuk be.

  • Szkenner generátorok: Ez az eszköz reguláris kifejezéseket használ bemenetként. Például LEX Unixhoz Operating rendszer.
  • Szintaxis-vezérelt fordítómotorok: Ezek szoftverek felajánl egy köztes kódot az elemző fa használatával. Célja, hogy egy vagy több fordítást társítson az elemzési fa minden csomópontjához.
  • Elemző generátorok: Az elemző generátor egy nyelvtant használ bemenetként, és automatikusan generál forráskódot, amely egy nyelvtan segítségével képes elemezni a karakterfolyamokat.
  • Automatikus kódgenerátorok: Köztes kódot vesz és gépi nyelvvé alakítja át.
  • Adatfolyam-motorok: Ez az eszköz hasznos a kódoptimalizáláshoz. Itt a felhasználó szolgáltatja az információkat, és a közbülső kódot összehasonlítja bármilyen kapcsolat elemzéséhez. Adatfolyam-elemzésnek is nevezik. Segít megtudni, hogyan kerülnek át az értékek a program egyik részéből a másikba.

Miért érdemes fordítóprogramot használni?

  • A fordító a teljes programot ellenőrzi, így nincsenek szintaktikai vagy szemantikai hibák.
  • A végrehajtható fájlt a fordító optimalizálja, így gyorsabban fut.
  • Lehetővé teszi belső struktúra létrehozását a memóriában.
  • Nem szükséges ugyanazon a gépen futtatni a programot, amelyen az készült.
  • A teljes program fordítása más nyelvre.
  • Fájlokat generál a lemezen.
  • Kapcsolja össze a fájlokat futtatható formátumba.
  • Ellenőrizze a szintaktikai hibákat és az adattípusokat.
  • Segít javítani a nyelvi szemantika megértését.
  • Segít a nyelvi teljesítménnyel kapcsolatos problémák kezelésében.
  • Lehetőség egy nem triviális programozási projektre.
  • A fordító felépítéséhez használt technikák más célokra is hasznosak lehetnek.

Fordítóprogramok alkalmazása

  • A fordítótervezés segíti a magas szintű programozási nyelvek teljes megvalósítását.
  • Támogatja a számítógép optimalizálását Architecture Párhuzamosság.
  • Gépek új memóriahierarchiájának tervezése.
  • Széles körben használják programok fordítására.
  • Más szoftvertermelékenységi eszközökkel együtt használva.

Összegzésként

  • A fordító egy számítógépes program, amely segít a magas szintű nyelven írt forráskód alacsony szintű gépi nyelvvé alakításában.
  • A fordítóprogram tervezésének néhány fontos jellemzője a helyesség, a fordítás gyorsasága, a kód helyes jelentésének megőrzése.
  • A fordítók három részre oszthatók: 1) Egymenetes fordítók, 2) Kétlépéses fordítók és 3) Többlépéses fordítók.
  • A „fordító” szót először Grace Murray Hopper használta az 1950-es évek elején.
  • A nyelvfeldolgozó rendszer lépései a következők: előfeldolgozó, tolmács, összeállító, linker/betöltő.
  • Fontos fordítókészítő eszközök: 1) szkenner generátorok, 2) szintaxis-3) irányított fordítómotorok, 4) elemző generátorok, 5) automatikus kódgenerátorok.
  • A fordító fő feladata a teljes program ellenőrzése, így nincs szintaktikai vagy szemantikai hiba.