Ich benutze GNU Bison 2.4.2, um eine Grammatik für eine neue Sprache zu schreiben, an der ich arbeite, und ich habe eine Frage. Wenn ich eine Regel festlege, sagen wir:
%Vor%Wenn ich eine Variation der Regel habe, zum Beispiel
%Vor%Wo (aus Flex-Scanner-Regeln):
%Vor%(und T_IDENT_LIST ist eine Regel für durch Kommas getrennte Bezeichner).
Gibt es eine Möglichkeit, all dies nur in einer Regel zu spezifizieren, indem man irgendwie "T_EXTENDS T_IDENT_LIST" als optional einstellt? Ich habe es schon mit
probiert %Vor%Aber Bison gab mir einen Fehler.
Danke
Um eine lange Geschichte kurz zu machen, nein. Bison behandelt nur LALR (1) Grammatiken, was bedeutet, dass es nur ein Symbol von Lookahead verwendet. Was Sie brauchen, ist etwa so:
%Vor%Es gibt andere Parsergeneratoren, die jedoch mit allgemeineren Grammatiken arbeiten. Wenn Speicher dient, unterstützen einige von ihnen optionale Elemente relativ direkt, wie Sie es wünschen.
Tags und Links bison flex-lexer grammar