Ungefähr einmal pro Jahr muss ich eine Grammatik und einen Parser entwickeln oder zumindest entwerfen - das scheint eine Konstante meines Arbeitslebens zu sein.Gründe für die Verwendung von Lex/Yacc-Alternativen?
Jedes Mal, wenn ich mit dieser Aufgabe konfrontiert bin, also etwa ein Jahr, überlege ich, ziemlich lex/yacc (flex/bison), Alternativen für plain lex/yacc und nach einigen Nachdenkend und versuchend, komme ich zurück zu schlichtem lex/yacc.
Weil ich einen CORBA-Server an der Nabe der Anwendung, die ich in von von einem Parser in fast jeder Sprache geschrieben nennen kann, so dass in dieser Zeit hatte ich einen Blick auf
- antlr4 (Java) und antlr3 (Java hat aber RT für andere Sprachen),
- SableCC (Java),
- Parse :: EBNF, Parse :: Yapp und Marpa (Perl),
- und SimpleParse (Python),
Für mich war das Tandem antlr4 mit antlrworks der aussichtsreichste Kandidat, aber ich bin noch nicht davon überzeugt, dass die Zeit, die man damit verbringen wird, amortisiert wird.
Die Grammatik, die ich entwickeln muss, ist ähnlich zu SQL DDL (in Bezug auf die Struktur, nicht in Bezug auf das Thema).
Warum würde irgendeine der Alternativen meine Aufgabe einfacher machen als die Verwendung von einfachem Lex/Yacc?
Ich denke, das ist eine Frage wie "welche Programmiersprache soll ich verwenden?", Die kaum die Art der sachlichen objektiven Antwort anzieht, die SO fördert. So abgestimmt, um als nicht konstruktiv zu schließen. Die Frage für Sie ist jedoch: Was ist mit Lex/Flex/Yacc/Bison, die Sie nicht zufriedenstellend finden? Das würde dir zumindest einen Hinweis geben, welche Features du suchst. Wenn es nur "Ich möchte etwas Neues ausprobieren", dann drehen Sie eine Münze :) – rici
Es ist nicht vergleichbar. Wenn alle Generatoren den gleichen Parser erzeugen würden, würde ich zustimmen, aber das Ergebnis ist je nach Parser-Generator völlig anders. –