2010-03-13 14 views
8

UPDATE: Diese Frage ist veraltet, aber zu Informationszwecken noch vorhanden.LALR (1) oder GLR unter Windows - Alternativen zu Bison ++/Flex ++, die aktuell sind?

Original Question

Ich war die gleiche Version von Bison mit ++ (1,21-8) und biegen ++ (2.3.8-7) seit 2002.

Ich bin nicht nach einer Alternative zu LALR (1) oder GLR zu dieser Zeit, nur auf der Suche nach den aktuellsten Optionen. Kennt jemand irgendwelche späteren Häfen von diesen als das Original, die nicht Cygwin-abhängig sind?

Was verwenden andere Benutzer in Windows-Umgebungen für die C++ - Compiler-Entwicklung (neben ANTLR oder Boost.spirit)? Kommerzielle Optionen sind in Ordnung, wenn Sie Erfahrungen aus erster Hand haben. Ich muss auch auf Linux kompilieren.

UPDATE: Diese alte Frage gestellt wurde, als ich nicht über die Richtlinien über Werkzeug Empfehlungen war (nicht sicher, ob Politik im Jahr 2010 gab es aber egal ...

I Bison 3.0 seit aktualisierte die GLR-Fähigkeiten und habe damit begonnen, damit zu experimentieren.

Ich entschied schließlich, dass jede Neuschreibung meines Parsers ein rekursiver Abstieg sein würde, um Fehlerberichte zu verbessern und leichteren Gebrauch in den Werkzeugen neben dem Compiler zu erlauben, so für jetzt vervollständige ich die Referenzversion in Bison: Ich sehe wenig Sinn darin, zu dieser Zeit zu einem anderen PG-Werkzeug zu konvertieren

+1

Warum nicht ANLTR? IMO funktioniert es gut unter Windows. – kenny

+0

Hauptsächlich weil ich meine Grammatik nicht von Yacc/Bison nach ANTLR portieren wollte. Nichts gegen ANTLR, ich habe damit gespielt, aber nie "adoptiert". Ich arbeite an meinem Compiler in meiner Freizeit, als Hobby, und jede Portierung in einen anderen Dialekt könnte mehrere Wochenenden binden. – codenheim

+0

Sie fragen also nach einem Werkzeug, das genau dasselbe wie flex + bison macht, aber keine Syntaxänderungen von flex/bison akzeptiert? Warum bleibst du nicht bei dem, was du benutzt? –

Antwort

2

Sie können versuchen, Elsa (jetzt ist es ein Teil von Oink-Projekt). Aber es ist jetzt fast tot. Die einzige interessante Eigenschaft ist, dass ein vollständiger und robuster C- und C++ - Parser darüber geschrieben ist.

LLVM enthält ein ziemlich modernes Parsing-Framework. Und es gibt auch einen C++ Parser (siehe clang project).

Einige Packrat-Implementierungen für C++ sind verfügbar, eine der trendigsten Sachen beim Parsen.

+0

Keine der Antworten war spezifisch für meine Frage, half aber trotzdem. – codenheim

1

Ich mag ANTLR sehr. Boost Spirit ist ein bisschen "draußen" für ernsthafte Produktionsanwendungen.

+3

@mrjoltcola: ANTLR hat ein C-Ziel und ist in C++ vollständig nutzbar. Es gibt kein separates C++ - Ziel, da es redundant wäre - die meisten C-Komponenten werden nur von ANTLR selbst verwendet.Sie können C++ in den semantischen Aktionen so oft verwenden, wie Sie möchten. –

+0

Ok, +1 zu Ihrem Followup, da es hilfreich ist. – codenheim