Mennyire nehéz egy parsert megírni?
11
Ugyan nem tőlem kérdezed, de pl. OOP paradigma támogatása (polimorfizmus, több szülős öröklés, tartalmazás, stb)
#11:
Az attól függ, hogy mit is szeretnél a nyelvbe rakni, mivel elég sok problémába bele lehet futni.
Én mostanság C#-ban eventekkel foglalkoztam és azt kellett megoldanom, hogy futás időben tudjak dinamikus paraméterezéssel létrehozni Actiont, feliratkozni egy meglevő eventre (listnerként) és kiváltani az eventet.
Ugye itt assemblyk vannak futásidőben, amikben külön-külön vannak a típusok, azokon belül field, property, method. Erre jönnek még eventek, attribútumok stb.
Ezt mindet szeretem használni, DE C#-ot JS szintax-al is használok, mint script nyelv. Azt egy adott területre, hogy ne kelljen teljes fejlesztőkörnyezet, csak egy sima szövegszerkesztő. Ez a JS-C# cucc nem az alapcsomag része, hanem megírták C#-hoz a JS interpretert. Viszont az utóbbi években a C#-ot is lehet sokkal könnyebben használni, nem "kényszerít" OOP-re, ő a háttérben elrejtve megvalósítja magának amit kell.
Szóval nagyon fontos, hogy a nyelv átlátható, olvasható, könnyen használható, logikus, gyors fordítás-futás garantálva legyen stb. Mellette ugye a szálkezelés, meg 10001 dolog szintén jól legyen implementálva és ne tákolni, hákolni kelljen.
A memory leak és egyéb veszélyekről, bugokról, vagy figyelmetlenségből adódó gondokról ne is beszéljünk. Bár illene, ha nyelvet tervez az ember.
Nekünk volt annak idején egy ilyen csoportos feladatunk még egyetemen,hogy ki kellett találni egy egyszerű nyelvet és ahhoz interpretert írni (az valamennyivel egyszerűbb, mint egy fordító), és ehhez sima C-t használhattunk.
Tanulságos feladat volt. És nem volt OOP meg ilyen bonyolítás benne. Egészen összetett feladat. És előre nagyon ki kell találni. Sőt ha jól találod ki akkor az geészet egyszerűbb megírni (ld. pl. a többes jelentésű dolgok, pl. a "a-b" és a "-3" esete a "-" jellel). Ha ügyesen találod ki ezek minimalizálhatóak (sőt akár meg is szüntethetőek egy kis okoskodással). De ez mindent meg kell,hogy előzzőn, hogy ezeket kitalálod. Aztán ha ez ügyesen van kitalálva akkor abból már nem nehéz megírni. Pl. ma már nem divat de pl. egy fordított lengyel megoldás egészen sokat tud segíteni ilyenkor.
https://www.youtube.com/playlist?list=PLRAdsfhKI4OWNOSfS7EUu..
Ha megy az angol akkor ez egy nagyon jó tutorial. A tokenizertől a lexeren át a végső compile-ig lefed mindent. Gyakorlatilag végigkövetheted hogyan írja meg a saját compiler-jét és közben kifejtve elmagyaráz mindent.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!