Frage

Ich arbeite an einem Compiler-Designprojekt in Java.Die lexikalische Analyse wird durchgeführt (mit jflex) und ich frage mich, welches Yacc-ähnliche Tool für die syntaktische Analyse am besten geeignet ist (am effizientesten, am einfachsten zu verwenden usw.) und warum.

War es hilfreich?

Lösung

Wenn Sie speziell YACC-ähnliches Verhalten wollen (tabellengesteuert), das einzige was ich weiß ist CUP .

In der Java-Welt, so scheint es, dass mehr Menschen neigen zu Rekursiver Abstieg wie ANTLR oder JavaCC .

Und Effizienz ist selten ein Grund, einen Parser-Generator zu wählen.

Andere Tipps

In der Vergangenheit habe ich ANLTR für beide Lexer und Parser verwendet, und die JFlex Homepage sagt es mit ANTLR zusammenarbeiten können. Ich würde nicht sagen, dass ANTLR Online-Dokumentation, die ist groß. Ich landete in 'The Definitive ANTLR Referenz' investieren bis , die wesentlich dazu beigetragen.

GNU Bison hat eine Java-Schnittstelle,

http://www.gnu.org /software/bison/manual/html_node/Java-Bison-Interface.html

Sie können es Java-Code verwenden, gehen erzeugen.

Es gibt auch Jacc.

Jacc ist so nah wie möglich an Yacc, aber es ist in reinem Java implementiert und generiert einen Java-Parser.

Es lässt sich gut mit jFlex verbinden

http://web.cecs.pdx.edu/~mpj/jacc/

Eine andere Möglichkeit wäre die GOLD Parser .

Im Gegensatz zu vielen der Alternativen erzeugt der GOLD-Parser die Parsing-Tabellen aus der Grammatik und legt sie in einer binären, nicht-ausführbaren Datei. Jede unterstützte Sprache hat dann einen Motor, der die binären Tabellen liest und analysiert die Quelldatei.

Ich habe die Java-Implementierung speziell nicht verwendet, habe aber den Delphi-Motor mit recht guten Ergebnissen verwendet.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top