Frage

Ich habe eine Anwendung, wo ich bereits einen Parser für eine Art von Grammatik und ich brauche eine zweite unterschiedliche Grammatik für einen anderen Zweck hinzuzufügen.

Ist es möglich, mehr als eine haben?

Und wenn ja, wie bekommt man einen anderen Einstiegspunkt?

Danke

david allan Finch

War es hilfreich?

Lösung

Ich glaube, Sie kann dies durch die Verwendung zu Bison die --name-prefix Option, und die --prefix Option Flex.

In beiden Fällen können Sie damit den Standard „yy“ Präfix auf den mit einem Präfix Ihrer Wahl generierten Funktionen ersetzen.

Andere Tipps

Ja, es ist möglich.

yacc sollte eine Markierung -p hat, in dem Sie einen anderen Präfix anstelle dem Standard angeben „yy“.

Die von lex conatins generierte Datei nur ein Symbol verwendet außen: yylex. Sie können zum Beispiel mit -Dyylex = mySecondLex, kompilieren.

keine direkte Antwort, aber Sie können mit einem allgemeineren Ansatz wie GoldParser , die Sie einen generischen Motor verwenden, um die LALR und DFA zu verarbeiten eingereicht von Ihrer Grammatik erzeugt wird.

Auf diese Weise um, können Sie eine beliebige Anzahl von unterschiedlichen Grammatiken in der gleichen Anwendung verwenden, und die Grammatik zu ändern nicht schaffen neue Quellcode, sondern nur neue Tabellendateien (die als eingebettete Ressource oder ähnliches aufgenommen werden könnten).

Standard lex und yacc haben keine Möglichkeit, dies zu tun. Flex und Bison tun, wie einige andere Implementierungen tun. Da sagte sie (in einem Kommentar), die Sie nicht flex und Bison verwenden, welche Versionen von lex und yacc sind verwenden Sie?

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