Frage zu Grammatiken (EBNF)

Gast #1030269
Lesenswert?

Hallo, ich habe eine Frage an Euch.

Ziffer = "0"| "1" | "2" | "3" | "x" | "y" | "z"; Zahl = Ziffer { Ziffer 
}; Produkt = ((Zahl | Produkt) " * " (Zahl | Produkt)) | 
("("Produkt")");


wieso wird de Ausdruck ((x4x))
als Produkt akzeptiert?

Wenn ich mir das herleite dann

"("Produkt")" -->
((Produkt))

Aber jetzt kann ich ja für Produkt nicht einfach eine Zahl einsetzen, 
was ich tun müsste, um auf ((x4x)) zu kommen ??!!
Gast #1030371
Lesenswert?

klar, hier nochmal übersichtlicher

1
Ziffer = "0"| "1" | "2" | "3" | "x" | "y" | "z"; Zahl = Ziffer { Ziffer};
1
Produkt = ((Zahl | Produkt) " * " (Zahl | Produkt)) |("("Produkt")");

Ich wäre um eine Antwort sehr dankbar.
Gast #1030433
Lesenswert?

1
Ziffer = "0"| "1" | "2" | "3" | "x" | "y" | "z";
Eine Ziffer ist 0..3, ein X, Y oder ein Z.
1
Zahl = Ziffer { Ziffer };
Eine Zahl besteht aus mindestens einer Ziffer.
1
Produkt = ((Zahl | Produkt) " * " (Zahl | Produkt)) | ( "("Produkt ")" );
Ein Produkt ist etweder ein Produkt in Klammern (dadurch fliegen 
"((..))" raus) oder aber eine Zahl oder ein Produkt, welches durch einen 
Stern von einer weiteren Zahl oder einem weiteren Produkt getrennt wird.

Dein Ausdruck:
1
((x4x))

Ein Produkt darf erst einmal ein Produkt in Klammern sein. Das zweimal, 
dann bleibt noch "x4x" übrig. "x4x" kann eine Zahl sein, aber weiter 
kommen wir dann trotzdem nicht.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren