Sziasztok!
Most jelent meg a Berkeley Yacc újabb változata és ennek kapcsán kérdezném, hogy van-e bármi lényegi különbség a licensz-en kívül a lex és flex, illetve yacc és bison között?
Ha pl. használnám ezeket, melyiket milyen meggondolás alapján lenne célszerű választanom?
- 5408 megtekintés
Hozzászólások
ANTLR kell neked. Sokkal modernebb es tobb dolgot tamogat, mint ezek az oskovuletek.
- A hozzászóláshoz be kell jelentkezni
De a yacc és a bison LALR parser generátorok, amik C kódot generálnak, az ANTLR pedig LL parser generátor, ami Java kódot generál. Szóval nem csereszabatosak.
Persze ha csak a feladat rögzített, az eszközök nem, akkor kényelmesebb az ANTLR.
- A hozzászóláshoz be kell jelentkezni
Azert az ANTLR csoppet tobb nyelvre tud kodot generalni. En pl. a Java kodgenerator reszet sosem hasznaltam
http://www.antlr.org/wiki/display/ANTLR3/Code+Generation+Targets
- A hozzászóláshoz be kell jelentkezni
Ha jol tudom a bison tud GLR parsert is generalni. Bar azt hiszem jobb ha ezt inkabb nem akarod kihasznalni. (A c++ nak van ilyen elcseszett grammatikaja...)
- A hozzászóláshoz be kell jelentkezni
Például tud automatikusan balrekurziót feloldani?
- A hozzászóláshoz be kell jelentkezni
Neten nem láttam, hogy tudna.
Nekem az a bajom az ll nyelvtanokkal, hogy a legtöbb nyelvhez az "intuitív" leírás hemzseg a balrekurziótól, ami az ll-parserek halála. LR persze szemrebbenés nélkül viszi.
Azon kívül, hogy az ll egyszerű, mint a faék, miért érdemesebb azt használni?
Anno amikor minimális fony-t tanultam, még úgy volt, hogy az LR sokkal hibatűrőbb, tehát nem csak az első hibát lehet detektálni, hanem sokkal többet is (példaként a Turbo Pascal volt felhozva, amely - állítólag - LL(k) fordító volt, és egy hibánál többet nem is tudott detektálni, míg a Turbo C már LR parserrel rendelkezett).
Szóval bennem az szűrődött le, hogy az LL-lel csak szívás van a balrekurzió feloldásával, az LR meg amúgy is többre képes. Akkor mi is van most?
- A hozzászóláshoz be kell jelentkezni