Entwickler-Ecke

Algorithmen, Optimierung und Assembler - Grammatik


klezmor - Di 16.09.08 00:29
Titel: Grammatik
Kann mir jemand sagen wie ich zu folgender Sprache eine Grammatik finde:
L= aabcc, aaaabccbbb, aaaaaabccbbbcccc, aaaaaaaabccbbbccccbbbbb ... das system sollte man schnell durchschauen. immer eine gerade anzahl an as sowie eine gerade anzahl an cs, sowie eine ungerade anzahl an bs, das kleinste wort ist aabcc.

Danke im Voraus.

Gruß Klezmor.


BenBE - Di 16.09.08 03:42

Also erstmal definieren wir die beiden Teile für die gerade Anzahl der Terminalsymbole a und c:

A = aaA
A = €
C = ccC
C = €

Gut, nun der kompliziertere Teil: wie definiert man das mit den B's???

Also zuerst mal: A's IMMER zuerst!
S = AB

Wenn mindestens 2 a's und ein b notwendig ist, muss obige Regel wie folgt geändert werden:
S = AaabB

k, weiter:
Ungerade Anzahl an b's zulassen
B = bB
Und jetzt noch die C's einbinden:
B = BCB
Jetzt fehlt nur noch die Möglichkeit, dass B auch leer sein kann:
B = €

Wäre's nach meiner Ansicht für diese Grammatik schon ;-)


klezmor - Di 16.09.08 10:13

Aber wäre laut deiner Grammatik nicht auch das Wort aab in der Sprache enthalten, dies sollte eigentlich ausgeschlossen werden, das kleinste Wort ist aabcc.


BenBE - Di 16.09.08 13:12

Dann nimm als Startregel
S = AaabBcc


Motzi - Mi 24.09.08 17:29

@BenBE: wenn ich das jetzt richtig sehe kann bei deiner Grammatik die Anzahl an bs sowohl gerade als auch ungerade sein...

Ich würde daher folgende Änderungen vorschlagen:
A = aaA
A = €
C = ccC
C = €

B = bbB
B = bBCbB
B = €

S = AaabBccCB


klezmor - Do 25.09.08 10:10

Die Sprache, wie ich sie hinschrieb, ist gar nicht über eine Grammatik definierbar. War ein Fehler von mir, hatte die Sprache falsch interpretiert.