Szöveges modellek automatikus szintézise metanyelvtan segítségével

A matematika és az informatika területén számos formális nyelvet használunk. Ilyenek például a programnyelvek, a HTML vagy XML, különböző modellek szöveges formátumai, de akár a matematikai képletek is. A formális nyelvek világában egy adott nyelven íródott szimbólumsorozatot szónak szokás nevezni (fontos kielemlni, hogy a szavaknak itt nincs közük a szóközökhoz). A formális nyelvek szintaxisa meghatározza az adott nyelven leírható szabályos szavakat. A szintaxis leírására a leggyakoribb módszer ún. nyelvtanok definiálása.

Egy megfelelően megírt nyelvtant használhatunk a szintaktikai hibák kiszűrésére, a nyelv dokumentálására, illetve leggyakrabban a szöveges formátum gépi beolvasására ("parsing"). A szövegek értelmezésén túl a nyelvtanok segítségével szavakat is generálhatunk az adott nyelven.

Egy nyelvtan szerinti szavak generálásának többféle haszna is lehet. Modellezési vagy programozási nyelvek esetén az így kapott modelleket vagy programokat használhatjuk modellező eszközök vagy fordítók tesztelésére. Matematikai vagy logikai nyelvek esetén is generálhatunk így tesztbemeneteket különböző megoldók kiérétékelésére. Egy viszonylag új technika az ún. szintaxis-vezérelt szintézis, amikor egy adott követelménynek megfelelő programot vagy modellt állítunk elő automatikusan, a nyelvtan és a követelmények alapján folyamatosan fejlesztve a korábbi változatokat, amíg a kívánt eredményt el nem érjük.

Ebben a témában a hallgató feladata egy nyelvtanokat leíró "metanyelvtan" készítése az ANTLR parser generátor használatával. Az így kapott nyelvtan alkalmas lesz más nyelvtanok beolvasására, lehetővé téve, hogy egy ehhez kifejlesztett program évényes szavakat generáljon a beolvasott nyelvtan által definiált nyelven. A kifejlesztett programot úgy kell megírni, hogy később megfelelő vezérlő mechanizmusokkal alkalmas legyen bizonyos tulajdonságú szavak generálására, végső soron a szintaxis-vezérelt szintézis megvalósítására.

Jelleg: 
Elméleti és gyakorlati
Advisor: 
Vince Molnár
TDK lehetőség: 
TDK lehetőség
Megismerhető technológiák: 
ANTLR, formális nyelvek, modell-szintézis
Előismeretek: 
C# vagy Java
Állapot: 
Folyamatban