# Áttekintés Ez az új nyelv a hagyományos szoftverfejlesztési szemlélet, a tudásábrázolás és a gépi feldolgozás támogatására készült. Erősen épít az absztrakcióra és a transzformációra. ## Duál nyelv A nyelv képességei egyedileg korlátozhatóak, validálhatóak ontológiai adatokkal kiegészítve tág határok között finomhangolható. A nyelv kettős felépítésű, egy teljes és egy futásidejú verzióból áll. Mindkét forma erősen típusos. A futásidelű változat multipragmadigma és statikus felépítésű. Fő feladata a végrehajtás és az egységes felépítés. Sok átfedés van a két változat között, de a teljes nyelv néhány dologban pont az ellentéte: - kiértékelés: statikus vs. dinamikus, - integritás: teljes vs. részekre bontott, - feldolgozás: azonal vs csak kiértékelés után. Mivel a szintaxis nem végleges és elég nagyszámú kulcsszó fordul elő, a kulcsszavak előtt egy csillag `*` karakter szerepel. A leggyakoribb kulcsszavaknál elhagyható: - class/representation - namespace/workspace - for/foreach/if/while. ## Célok - adatok és típusok leképezése - adatok csomópontosítása - összefüggő adatok tárolása, lekérdezése (repository) - általános transzformáció - végrehajtható kód definiálása (jelenleg csak procedurális) - ontológia széles körű támogatása - verziók és változatok párhuzamos használata - egységes felépítés általánosabb feladatokhoz (nulladik implementáció) ## Rendszer architektúra A teljesen nyílt architektúra rendkívüli flexibilitást biztosít. Szabadon konfigurálható az összes rendszerelem: - implicit (`Group::ParserData`, `Group::DynamicMethod`) és explicit (`System::Parser`, `System::ReaderInterfce`) bővíthető nyelvtan (DSL) - publikus és verzionálható AST, párhuzamosan is használható - választható és lecserélhető végrehajtó modulok a belső AST-hoz: értelmező, JiT (LLVM), C++ DSO, `System::ExecuteInterface` - konfigurálható végrehajtási kontextus - a futtaható kódot tartalmazó raktár szinte bárhonnan feltölthető - projekt támogatás segítségével tetszőlegesen egyedire szabható működés: beolvasás, validáció, tárolás, végrehajtás, ... ## Feldolgozási lánc Jelenleg két alapértelmezett módszer implementált, de a moduláris felépítésnek köszönhetően tetszőleges egyedi feldolgozási lánc megvalósítható. ### Szkript futtatás A következő szakaszok futnak le egymás után: - a megadott forrskód beolvasása és a hozzá tartozó nyelvtan segítségével AST generálás - az alapértelmezett raktárba tárolás, - a munkatérhez tartozó validátor végrehajtása - teljes nyelv esetén transzformáció a futásidejű nyelvre - opcionálisan optimizáló transzformációk - a forráskódban található belépési pont végrehajtása ### Projekt betöltés és végrehajtás Betöltési szakasz: - Új raktár és feldolgozó kontextus létrehozása - manifest fájl feldolgozása - a saját raktár feltöltése a manifest fájlnak megfelelően - onLoad() metódus végrehajtása korlátozott környezetben A projekt cél(ok) kiértékelése külön interakció után történik vagy csoportos feldolgozás is lehetséges (pl. csomag létrehozás vagy dokumentáció készítés).