* editor, debugger, konzol és grafikus ablak
* Kicsomagolás után egyből működik - hordozható Java implementáció (Java 8 kell hozzá csak)
* Basic256 kompatibilitás (még vannak hiányzó parancsok, de a http://basic256.blogspot.hu/ példáinak többsége működik, kivételek például az Arduinos példák)
* Mélykonzol üzemmód: teljes értékű editor (VT1) és grafikus GUI (VT2) X nélkül (ez a rész Linux only és csak 64 bites bináris van egyelőre). 80-as évek mikroszámítógépeinek stílusában használható.
A program nyílt forrású, githubon van fenn. Itt érhető el a projekt oldal, és a letöltés: https://github.com/rizsi/rbasic http://rizsi.com/rbasic/
- asch blogja
- A hozzászóláshoz be kell jelentkezni
Hozzászólások
Szep munka, grat!
Miert dontottel sajat parser irasa mellett meglevo parser generatorok helyett? (JavaCC vagy ANTLR peldaul)
- A hozzászóláshoz be kell jelentkezni
Köszi! Még egyetem alatt írtam egy early parsert, és gondoltam, miért ne próbáljam ki. Elég lassú (az early parsing alapelve is lassú, meg a konkrét megvalósításon is lenne mit optimalizálni), emiatt nem a legjobb választás, de az API-ja barátságos, egyszerű használni (alapvetően nyelv->AST egy lépésben). A hibajelzése nem túl szofisztikált, ez még probléma vele.
Not not invented here, ez a lényeg :-). Ez egy hobbi projekt, ésszerűtlen döntések is lehetségesek. Egyébként, amikor először csináltam ezt a parsert, akkor még a parser API-k olyanok voltak, hogy a nyelvtan közé kellett processzáló kódot írni. Ez nekem nagyon nem tetszett, olyat akartam, ami nyelvtanból AST-t csinál, majd azt lehet iterálni programból. Ahogy látom az új ANTLR (4) is ilyen, de az akkori még nem ilyen volt.
Az early parser előnye még, hogy a nyelvtanra a kikötései minimálisak: kontextusfüggetlen, és egyértelmű legyen. (a nem egyértelmű parsolás runtime hibát okoz, ami akár kezelhető is lehet egy heurisztikával ami a lehetőségek közül választ.) A legtöbb egyéb módszer megköveteli, hogy valamilyen normál formába hozzuk a nyelvtanunkat.
A parserem hasznos kiegészítője még a kifejezés nyelv generátor. Ez arra jó, hogy precedencia szerint felsoroljuk az összes kifejezés típust, és generálja belőle a kifejezés nyelvtant. Így ha be kell illeszteni egy új operátort, az gyerekjáték, nem kell többszörösen redundáns nyelvtant túrni, hanem csak felveszek egy plusz sort a kifejezések közé. (Persze ezt meg lehetne csinálni ANTLR alapon is nyilván, de tudtommal alapból nem része.) Lásd pl.:
https://github.com/antlr/grammars-v4/blob/master/java8/Java8.g4#L1277
és:
https://github.com/rizsi/rbasic/blob/master/java/rizsi.basic/src/main/r…
- A hozzászóláshoz be kell jelentkezni