Parser generator C++
2010-01-31T21:48:22+01:00
2010-03-12T10:02:02+01:00
2022-06-30T18:11:40+02:00
  • Már biztos túl vagy a dolgon, de másnak is hasznos lehet. Tehát:
    Én a Coco/R-t ajánlom. Miért?

    Java, C# C++ stb. kódot is tud generálni
    scannert és parsert is készít
    objektumorientált kódot generál
    unicode-os forrást is feldolgoz (számomra ez alap)
    barátságos, egyszerű megtanulni
    van hozzá egy teljes fordítóprogram példaképpen
    két sablonfájlt használ a scanner és a parser generálásához, amibe könnyen bele tudsz nyúlni, és kibővíteni saját igényeid szerint
    szabad forrású (naná) GPL-es (de a generált parser, scanner nem az)

    Egyébként LL(1)-es grammatikát fogad, amiben elég könnyű gondolkozni. Ha az ember kézzel ír parsert, az általában LL(1) lesz :) Ezért könnyű megérteni és kijavítani a parser konfliktusokat.

    A hátránya, hogy elég szegényesek a parancssori paraméterek, pl. nem lehet beállítani a generált fájlok, osztályok nevét. Viszont nagyon jól emészthető a forrás, bele lehet nyúlni. Én már meg is tettem...
    Mutasd a teljes hozzászólást!
  • Saját Operacios rendszer es programnyelv nelkul nem lehetsz igazi JEDI.


    Igaz. Akkor hát amíg még az erő velem van, megyek is egy új saját szerver operációs rendszer programnyelvet írni (gy.k. az egy olyan program nyelv, amin új szerver operációs rendszereket szokás írni ).
    Mutasd a teljes hozzászólást!
  • Mondjuk a LISP szintaxis sem elég hardcore. Minek az a sok felesleges zárójel?

    Sokkal tömörebb a fordított lengyel forma.

    Szóval vegyük a pitagórasz tételt.

    Hátulgombolós szintaxis kicsit nehezebb rá parsert írni:

    a*a + b*b = c*c

    Lisp szerű szintaxis, parsert írni rá könnyű, de nem elég tömör, meg amúgyis még túl jól olvasható: (és isten is cáfolta, hogy ebben írta volna a világot)

    (= (+ (* a a) (* b b)) (* c c))

    Hardcore fordított lengyel szintaxis extraprimitív parserszükséglettel (egy primkó stack-automata az egész) és verhetetlen tömörséggel:

    a a * b b * + c c * =

    Mutasd a teljes hozzászólást!
  • Milyen nyelv lesz?
    Mondok két végletet:
    - Valami elvont egzotikus kísérleti cucc
    - Könnyen átlátható programozási nyelv gyerekeknek

    Ha az első szélsőséghez van közel a dolog, akkor nem feltétlenül kell túl szép szintaktikát alkalmazni, elég valami geek-eknek való is: Nyugodtan lehet LISP szerű szintaxist alkalmazni. (Tudod, ott a szintakszis nem más mint egy zárójelhierarchia, amiben a levelek a tokenek.)
    Namost LISP-szerű szintaxis elemzőhöz nem kell semmilyen parser generátor, LISP szintaxis elemzőt már kb. 20 sorban meg lehet írni csukott szemmel akármilyen nyelven...

    És természetesen LISP-szerű szintaxist bármilyen szemantikájú nyelvnek lehet adni. (Ez olyan, mint az XML: bármilyen jellegű adatot le lehet írni XML-ben. Csak a LISP szerű szintaszis egyszerűbb, 'fundamentálisabb'.)

    Amúgy ezt nem azért írtam, mert jó tanácsnak tartom, mittudom én, hogy miről akar szólni a diplomamunkád, és mire hegyezed ki a dolgot. Csak adalékként írtam.
    Mutasd a teljes hozzászólást!
  • Ha fordítót akarsz írni, akkor nem feltétlenül szükséges a lex/yacc vagy társaik használata, lehet azok nélkül is. Ha meg tudod szerezni Wirth: Algoritmusok+Adatstruktúrák=Programok könyvét, abban lépésről lépésre végigvezet egy nyelv (jelesül a P) tervezésétől a megvalósításig.
    Mutasd a teljes hozzászólást!
  • Te nézted már, mit generál a (x)harbour? Mert hogy az nem C kódot, hanem a saját virtuális gépének kódját generálja. A generált kód a hb_vmExecute() függvényhívást leszámítva adatdefiníció. Az, hogy C-vel fordítható egy dolog, lehetne fortran is.
    Mutasd a teljes hozzászólást!
  • Clipper? Pelles C? (ezek meg mik?)

    hujjujujuj bizony. google megmondta volna.
    Az egyik egy programozási nyelv ( tökmindegy hogy milyen ) a másik egy C fordító.
    Én nem írtam fordítót ( még ), de gondolom annak is van egy valamilyen technikája, elmélete. Aztán, hogy a kimenet C, C++, bantu vagy kínai nyelvű lesz szinte mindegy, ígyis úgyis kell egy modul ami majd a feldolgozott saját kódodat átalakítja a fent említett nyelvek egyikére.
    Mutasd a teljes hozzászólást!
  • hujjujuj

    Clipper? Pelles C? (ezek meg mik?)

    majd megnézem a doksiját

    igazából kettő van ami eddig nálam szóba jött:
    flex+bison,spirit

    egyelőre spirit felé hajlok, de még nem néztem nagyon a másikat, de majd nézek. (ehhez is kellenének a tanácsok...)

    thXx

    Mutasd a teljes hozzászólást!
  • Habár írtad, hogy nem C-t kellene generáljon, hanem c++-t én mégis linkelek egyet neked.
    Az xHarbour-ról beszélek, amelyik egy Clipperben megírt forrásból C kódot generál, majd a Pelles C-nek a fordítójával lefordítja és linkeli. Töltsd le és nézz bele a source\compiler könyvtárba.
    Ha van egy CVS kliensed, akkor itt egy commandline:
    :pserver:anonymous@xharbour.cvs.sourceforge.net:/cvsroot/xharbour
    Mutasd a teljes hozzászólást!
  • Mutasd a teljes hozzászólást!
  • Én ezekkel a programokkal kapcsolatban teljesen laikus vagyok. Tudnál néhány jó dokumentációt linkelni?
    Főleg a flex-re. (A bison-ra találtam valamit.)
    Mutasd a teljes hozzászólást!
  • Mire lehet jó egy saját prog. nyelv?
    Gyakorlásra.
    Egyedi igényekre.
    Szórakozásra.
    A dolgok mélyebb megismerésére.
    Csajozásra.
    Mutasd a teljes hozzászólást!
  • Vegre valami tökös diplomamunka, maskor meg megy a fikazas, hogy higul a szakma blablabla...

    Mutasd a teljes hozzászólást!
  • flex+bison

    indok:

    ezekről van a legtöbb dokumentáció, továbbá jó pár tutorial-ban is ezeket használják, meg szerintem a legtöbb könyvben is lesz. ez a nagy indokom remélem meggyőztelek az érveimmel.

    de szerintem írjál saját elemzőket. azért az sokat dobna a dolgon.
    Mutasd a teljes hozzászólást!
  • Biztos jó ötlet az a saját program nyelv?


    Saját Operacios rendszer es programnyelv nelkul nem lehetsz igazi JEDI.
    Mutasd a teljes hozzászólást!
  • Pld egy RSA kódoló class-t írni.


    Nekunk ezt egy ratyi egyetem ratyi gazdinfo szakan kellett egy tantargybol beadandokent elkesziteni sok egyeb mellett, ennyit a bonyolultsagarol...

    De ami a lényeg, hogy egyáltalán lehet valami eljövendő gyakorlati haszna is


    Pl?

    Szerk: jut eszembe, egy ismerosom, aki egy komolyabb egyetem komolyabb mernoki szakara jart, ezt egy vizsgan kellett megirja!
    Mutasd a teljes hozzászólást!
  • Ez csak egy FÉL példa volt.

    Diplomamunkához nem szükséges éppen fordítókkal vacakolnod. Sokkal egyszerűbb utat is választhatnál. Pld egy RSA kódoló class-t írni. Kellenek hozzá matematikai alapok, meg el lehet róla vitatkozni, és persze ollózni lehet az egészet. De ami a lényeg, hogy egyáltalán lehet valami eljövendő gyakorlati haszna is, ellentétben egy új programnyelvvel.

    És akkor most lássuk a valódi példát is, mert biza én csak ellenérveket tudok.
    Mutasd a teljes hozzászólást!
  • remek ötlet.
    a mai világban egy saját programnyelv például arra kellhet, hogy diplomát szerezhessek...de ez csak EGY példa
    Mutasd a teljes hozzászólást!
  • Biztos jó ötlet az a saját program nyelv? Én amikor anno pluginokat kellett megoldjak, simán csak a C# .dll-jét hívtam be classokra / függvényekre bontva, és tuti jó lett. Igaz, nem C++, hanem C szintaktikás, de vannak abban is classok.

    Ha konkrétan előnyökre / hátrányokra vagy kíváncsi, azt keresd inkább az alkalmazás elvárásai között, amiről itt semmit sem írtál. Mégis mire kellhet a mai világban egy saját programnyelv?
    Mutasd a teljes hozzászólást!
  • Hello!

    Szeretnék egy saját programnyelvhez fordítót írni ehhez kéne egy parser generator(lexikális,szintaktikus,szemantikus elemző generátor), hogy segítsen.
    A nyelv egyszerű, tartalmaz alprogramokat,elágazásokat,struct-ot,ciklusokat,alap típusokat,értékadás,+,-,*,/,stb.

    Nézegettem a neten mi lenne a legjobb választás de igazán gyakorlatom egyikben sincs ezért kérdeznék olyat akinek van valamilyen tapasztalata ilyenekben és tud valami "előnyök:... hátrányok:..." szerkezetű leírást adni valamelyikről.

    Ami fontos lenne, hogy C++ kódot generáljon. (Nem C-t!)

    Lex/Yacc,bison,spirit,antlr,...ilyenek.

    És indoklásnak is örülnék, mert az olyan típusú véleményekkel tele van az internet, hogy "XYZ-t használj mert az jó!".

    Azért ide tettem fel a kérdést és nem társalgóba mert egy idő után el kell döntenem mit használok, és onnantól kezdve azt használom és kész.

    Úgyhogy az kapja a pontot aki egy nekem valót ajánl rendesen.

    Persze nem remélem, hogy sokan otthon lennének a témában...de azért várom a válaszokat!

    THX!
    Mutasd a teljes hozzászólást!
Címkék
abcd