Wie kann ich diese kontextfreie Grammatik erzeugen?

2 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Schreibe das Ganze zuerst als regulären Ausdruck: „b*(a(bb)*)*b?“. Daraus kannst Du die Grammatik fast wörtlich ablesen.

Du erlaubst eine Kombination aus a's und dem Nichtterminal X, sodass die beiden Enden des Wortes a's sind (oder alternativ eine beliebige anzahl von a's oder b's, je nachdem wie man die Aufgabe versteht). Und evtl., auch je nachdem wie man die Aufgabe versteht, zwischen zwei a's immer ein X liegt.

Das Terminal X ersetzt du dann durch eine gerade Anzahl an b's. Beispielsweise so:

X -> bXb | bb;