Domain Specifikus Nyelvek

DSL-ek elemzése

Felhasználási cél szerint

Eszköz szintű DSL: Egy eszköz, aminek a kezelésére önálló nyelvet fejlesztettek ki. Ilyen például a Make.

Architektúra DSL: Olyan DSL, amikkel rendszerek fölépítését lehet leírni. Például meg lehet fogalmazni egy alkalmazás szerkezetét, hogy ebből egy program üres modulokat, vagy származtatásra váró osztályokat generáljon.

Technikai DSL: Egy bonyolult, szerteágazó rendszerre vonatkozó DSL. Magas kifejezőképessége miatt valahol a DSL nyelvek és az általános programnyelvek között áll. Ilyenek a matematikai programcsomagok is.

Szakértői DSL: Olyan nyelv, amit elsősorban nem programozóknak szántak, hanem azoknak, akik az adott terület szakértői. Közelebb állnak a természetes nyelvhez, mint a többi DSL.

Interpretált és fordított DSL-ek

Itt a szempontok hasonlóak, mint az általános célú programozási nyelvek esetén. A fordítás mellett szól a nagyobb teljesítmény és a futtatást megelőző ellenőrzések. Az interpretálás mellett szól a rugalmasság (futtatás közbeni adatmódosítás, tetszőleges kód kiértékelése futás közben…), a gyorsabb egyszeri végrehajtás, és az implementáció könnyebbsége.

Belső és külső DSL-ek

A belső DSL egy olyan nyelv, amely egy általános célú programnyelvben van megvalósítva. Követi a gazdanyelv szintaxisát, mégis nézőpontja alapján elkülönül attól. A lényeg itt, hogy a felhasználó nem csupán egy eszközt kap, hanem teljesen más szemszögből tudja a problémát megoldani, ha a DSL-ben ír programot.

Egy belső DSL-t a gazdanyelv fordítási vagy futtatási környezete értelmez. Ennek köszönhető, hogy belső DSL-ek esetén nem kell a lexikális és szintaktikus elemzéssel foglalkozni. Bizonyos esetekben a szintaktikus elemzést részben a DSL fejlesztésekor a gazdanyelvben kell megfogalmazni, de itt egy sokkal magasabb szinten adható meg, mintha elemzőprogramot kellene generálni hozzá.

Továbbá ezzel a módszerrel sok esetben a gazdanyelvhez készített eszközöket is használhatjuk a DSL-ben való programozáshoz, például egy fejlesztői környezetet.

A külső DSL ezzel szemben egy önálló nyelv, amelyet a környezet valamely más nyelvre fordít, vagy interpretál. A külső DSL fordításához vagy végrehajtásához saját környezetet kell létrehozni a DSL készítőinek.

A szintaxis meghatározásában a fejlesztőnek nagyobb szabadsága van, mint a belső DSL-ek esetén, ahol minden DSL programnak érvényes programnak kell lennie az általános nyelvben is.