kategória | ||||||||||
|
||||||||||
|
||
A fordítóprogramok felépítése, az egyes funkcionális részek részletes feladatai.
Compiler: olyan fordítóprogram, melynél alapvetõen különválik a fordítási és a futtatási idõ. Az ilyen 454b12e eszköz általában magasszintû nyelveket fordít gépi kódra.
Assembler: olyan compiler, amely jellemzõen assembly (a gépi kód szimbólikus megfelelõit tartalmazó) kódot fordít közvetlenül gépi kódra.
Compiler felépítése:
COMPILER:
(forrásnyelvű prg)Þ(tárgykód, hibák)
INPUT_HANDLER:
(forrásnyelvű prg)Þ(karaktersorozat)
OUTPUT_HANDLER:
(forrásnyelvű prg, hibák)Þ(lista)
Source_handler:
(forrásnyelvű prg, hibák)Þ(karaktersorozat, lista)
Code_handler:
(tárgykód)Þ(tárgyprg)
A programok fordítása és a futtatása közti különbség, a fordító és értelmező programok működésének eltérései.
Fordítóprogram: valamely programozási nyelv forrásnyelvü programjának (source) tárgykóddá (object) alakítására szolgáló, általában szoftver megvalósítású eszköz.
Fordítási idõ: az az idõ, ameddig a fordítóprogram a fent említett transzformációt elvégzi.
Futási idõ: a már lefordított kód végrehajtásának ideje.
Compiler: olyan fordítóprogram, melynél alapvetõen különválik a fordítási és a futási idõ. Az ilyen 454b12e eszköz általában magasszintû nyelveket fordít gépi kódra.
Interpreter: olyan szoftvereszköz, mely a fordítási és futtatási idõt nem választja ketté. jellemzõ módon bizonyos egységek (pl. egy utasítás, vagy egy sornyi utasítás) valamilyen közbensõ kódra fordítása után, az elkészült kódot már le is képes futtani.
Hibrid rendszer: mind a compiler, mind az interpreter tulajdonságok megtalálhatók benne.
A forrásprogramok fordítása két, egymástól jól elkülöníthetõ egységbõl tevõdik össze, az analízis (felbontás, elemzés), illetve a szintézis (létrehozás, felépítés) részbõl.
Lexikális elemzés: a forrásprogramot kisebb részekre (tokenekre, szimbólumokra) szabdaljuk, daraboljuk, mely részek elválasztójelek (space, tab, újsor, stb.) között találhatók, valamint ezenfelül a forrásból a felesleges dolgokat - pl. megjegyzéseket, "space" karaktereket - eltávolítjuk. A szimbólumok elõfordulását, s ha kell az értékét a szimbólumtáblába feljegyezzük.
Szintaktikus elemzés: a lexikális elemzõtõl kapott szimbólumsorozatot egyeztetjük a nyelvtani szabályokkal, hogy kiderüljön az, hogy a forrásnyelvû program megfelel -e az adott nyelv definíciójának.
Szemantikus elemzés: a szintaktikusan elemzett programot ellenõrzi, hogy a formai szabályoknak megfelel -e. Ilyen formai szabály pl. változók tipusának egyeztetése az értékadás két oldalán, mûveletek eredményének ellenõrzése (pl. sztinghez ne adjunk lebegõpontos értéket).
Kódgenerálás: az elõzõekben leírt módon elemzett program alapján futásképes (vagy további adminisztráció után futásképessé tehetõ) kód elõállítása.
Kódoptimalizálás: a kódgenerátor által készített kód optimalizálása, pl. sebességének növelése, vagy hosszának csökkentése kódátalakítással.
Találat: 1611