„Fordítás / értelmezés folyamata” változatai közötti eltérés

Innen: Programozás Wiki
Ugrás a navigációhozUgrás a kereséshez
(stilisztikai korrekció)
7. sor: 7. sor:
 
* típuselemzés (type analysis) - ennek során az értelmező ellenőrzi azt, hogy az utasítások paraméterei és a műveletek operandusai megfelelnek -e a nyelv szabályainak és a program által megengedettnek. ebben a lépésben kerülnek azonosításra és egyértelműsítésre az ún. túltöltött (overloaded) operátorok és függvényhívások is, azaz itt dönti el az értelmező ill. a fordító, hogy az esetleg rendelkezésre álló több azonos nevű, de eltérő típusú paraméterekkel hívható, ill. az azonos módon jelölt, de több típuson vagy típus között is végrehajtható műveletek közül konkrétan melyik is kerüljön végrehajtásra az adott művelet ill. függvényhívás részeként
 
* típuselemzés (type analysis) - ennek során az értelmező ellenőrzi azt, hogy az utasítások paraméterei és a műveletek operandusai megfelelnek -e a nyelv szabályainak és a program által megengedettnek. ebben a lépésben kerülnek azonosításra és egyértelműsítésre az ún. túltöltött (overloaded) operátorok és függvényhívások is, azaz itt dönti el az értelmező ill. a fordító, hogy az esetleg rendelkezésre álló több azonos nevű, de eltérő típusú paraméterekkel hívható, ill. az azonos módon jelölt, de több típuson vagy típus között is végrehajtható műveletek közül konkrétan melyik is kerüljön végrehajtásra az adott művelet ill. függvényhívás részeként
 
* kódgenerálás ill. végrehajtás (code generation / execution) - ebben a lépésben a megelőző szakaszok nyomán egyszerűen feldolgozhatóvá és egyértelművé tett műveletsort az értelmező végrehajtja ill. a fordító ez alapján [[tárgykód]]ot készít belőle
 
* kódgenerálás ill. végrehajtás (code generation / execution) - ebben a lépésben a megelőző szakaszok nyomán egyszerűen feldolgozhatóvá és egyértelművé tett műveletsort az értelmező végrehajtja ill. a fordító ez alapján [[tárgykód]]ot készít belőle
 +
 +
A felsorolásban az előfeldolgozás kakukktojás abban az értelemben, hogy azt általában egy a további fordítási ill. értelmezési folyamatoktól teljesen különálló rutinhalmaz ill. program végzi, amely azonban maga is alkalmaz egy bizonyos fajta lexikai ill. szintaktikai elemzést, amely azonban jóval egyszerűbb, mint a majdan a tényleges feldolgozás során végrehajtott, és mindössze a makrók, beszúrások és más előfeldolgozási szerkezetek azonosítására alkalmas a forráskódon belül.

A lap 2010. július 9., 23:55-kori változata

A fordítás ill. értelmezés gyakran több allépésből álló műveletek, amelyek a következő jól elkülöníthető, de egymással szorosan együttműködő egységekre bonthatók:

  • előfeldolgozás (preprocessing) - az előfeldolgozóra építő nyelvekben ez végzi a szövegszintű makrók, beszúrások (inserts, includes) kifejtését, előállítva az értelmezendő forráskód teljes, de továbbra is teljesen nyers, szöveges változatát
  • lexikai elemzés, tokenizálás (tokenization) - ebben a lépésben a beépített és fenntartott utasítások, kulcsszavak, a konstans kifejezések, valamint a műveleti, sorhatároló és egyéb speciális jelek, jelsorozatok kerülnek kódolásra egy később könnyen és egyértelműen azonosítható bináris formára. a művelet végén előálló közetes adatfolyam a forráskód gyakorlatilag egy "zanzásított", a nyelv szempontjából lényegtelen formai információitól (mint pl. ún. "white space"-ek, fizikai sortagolás, stb.) általában megfosztott változata, amelyből azonban továbbra is rekonstruálható az eredeti forráskód gyakorlatilag információvesztés nélkül, uniform módon
  • szintaktikai elemzés (syntax analysis) - e folyamat során az értelmező vagy a fordító ellenőrzi, hogy az - immár egyszerűen feldolgozható, értelmezhető - szimbólumok, kulcsszavak és más nyelvi kifejezések a nyelv szabályainak megfelelően lettek -e összeállítva a forráskódban, azaz, hogy pl. minden zárójel, utasításblokk, be van -e zárva, minden operátor között vannak operandusok, a nyelvi szerkezetek minden eleme jelen van -e. ha utóbbi feltétel nem teljesül, a fordító hibaüzenet - vagy nem egyértelmű, de értelmezhető helyzetben figyelmeztetést - küldhet erről. a műveletsor hiba nélküli végrehajtása után a további rutinok egy garantáltan a nyelv szabályait követő, tehát erősen megbízható adatsorral dolgozhatnak tovább
  • környezet- ill. szkópelemzés (scope analysis) - ez a lépés csak a különböző lexikai szkópegységeket megkülönböztető nyelvek esetében van jelen, és a program kódjában szereplő azonosítók teljes értékűvé kifejtését végzi, ami lehetővé teszi a későbbi lépésekben pl. az ugyanolyan nevű globális vagy lokális, ill. különböző modulokben, egységekben elhelyezkedő azonosítók megkülönböztetését a feldolgozás során
  • típuselemzés (type analysis) - ennek során az értelmező ellenőrzi azt, hogy az utasítások paraméterei és a műveletek operandusai megfelelnek -e a nyelv szabályainak és a program által megengedettnek. ebben a lépésben kerülnek azonosításra és egyértelműsítésre az ún. túltöltött (overloaded) operátorok és függvényhívások is, azaz itt dönti el az értelmező ill. a fordító, hogy az esetleg rendelkezésre álló több azonos nevű, de eltérő típusú paraméterekkel hívható, ill. az azonos módon jelölt, de több típuson vagy típus között is végrehajtható műveletek közül konkrétan melyik is kerüljön végrehajtásra az adott művelet ill. függvényhívás részeként
  • kódgenerálás ill. végrehajtás (code generation / execution) - ebben a lépésben a megelőző szakaszok nyomán egyszerűen feldolgozhatóvá és egyértelművé tett műveletsort az értelmező végrehajtja ill. a fordító ez alapján tárgykódot készít belőle

A felsorolásban az előfeldolgozás kakukktojás abban az értelemben, hogy azt általában egy a további fordítási ill. értelmezési folyamatoktól teljesen különálló rutinhalmaz ill. program végzi, amely azonban maga is alkalmaz egy bizonyos fajta lexikai ill. szintaktikai elemzést, amely azonban jóval egyszerűbb, mint a majdan a tényleges feldolgozás során végrehajtott, és mindössze a makrók, beszúrások és más előfeldolgozási szerkezetek azonosítására alkalmas a forráskódon belül.