Szoftvertranszformációs rendszerek
Programnak a szoftver több formáját is nevezhetjük: a felhasználó a látott grafikus felületet nevezi így, a számítógép a közvetlenül végrehajtható számsorozatot, a programozó pedig általában a forrásnyelvi szöveget. Az utóbbi két forma közötti átalakítást végzi a fordítóprogram. Mire a programszövegből gépi kódú utasítássorozat keletkezik, a szoftver többféle reprezentációban is feldolgozásra került - lexikai, majd nyelvtani elemző alkotott hierarchiát a forráskód betűsorozatából; e struktúrán többféle elemzés - például típushelyesség-ellenőrzés - ment végbe, s csak az előre rögzített szabályoknak megfelelő programszövegből keletkezik futtatható állomány.
Ezek a részprogramok mind szoftvertranszformációkat hajtanak végre; de nem csak ezek a szoftvertranszformációk léteznek. Ezt a technikát használjuk szoftverkomponensek, dokumentáció automatikus generálására, összetett tulajdonságok ellenőrzésére is. Egyszerűbb esetekben lehet, hogy úgy gondoljuk: egy marék reguláris kifejezés illesztésével és cserék végrehajtásával is generálhatunk kódot, de hosszú távon még ekkor is rosszul járunk. Ezért szükséges a szoftvertranszformációinknak egységes keretet, nyelvet adni.
A Stratego/XT
A Stratego/XT összetett szoftvertranszformációk megvalósítására alkalmas keretrendszer. Egy transzformációs rendszer általában kicsi transzformációk csöve (pipeline): első lépésben a forrásszövegből egy elemző szintaxisfát készít, ezen a fán több transzformációt hajt végre, majd az utolsó fából programszöveget generálunk - ami a teljes transzformáció eredménye.
A keretrendszer fő részei:
- ATerm Format - az Annotated Term Format (röviden: ATerm) szerint kezeli a rendszer a szintaxisfákat.
- SDF, Syntax Definition Formalism, környezetfüggetlen nyelvtanok leírására alkalmas nyelv.
- Stratego nyelv, a Stratego/XT központi eleme. A termátírási paradigmára alapuló fatranszformációs nyelv. Logikailag két fő működési szintet különböztetünk meg: a szabályok szintjét, ahol meghatározzuk, hogy mit mire lehet átírni, és a stratégiák szintjét, ahol meghatározzuk az átírások sorrendjét. E nyelvről szól a dokumentáció.
- GPP, Generic Pretty-Printing, ami a transzformációk elvégzése után a fák alapján a végső kimenetet generálja (akár végrehajtható formában, lefordítható forráskódként vagy nyomtatáshoz LaTeX vagy HTML formátumban).
- XT tool collection, infrastruktúrális illetve fejlesztést segítő programok gyűjteménye.
- XTC, az általunk létrehozott transzformációs eszközök egyetlen futtatható állományba szerkesztéséhez.
A dokumentumról
E dokumentum írásakor a 0.17-es verzió volt a legfrissebb.
A következő jelöléseket használjuk:
forráskód folyószövegben
- Stratego forrásfájl tartalma:
Stratego forráskód
Megjegyzés Stratego forráskódban
- stratego-shell munkamenet:
stratego> interpreter felhasználói bemenete
Interpreter által elvégzett transzformáció eredménye, új aktív term
Interpreter egyéb válasza
A sikertelen transzformációt az interpreter a command failed üzenettel jelzi. A legutóbbi sikeres transzformáció eredményét tekinti aktív termnek.
- Konzolmunkamenet:
$ operációs rendszer parancssorának bemenete
futtatott program kimenete