Das Thema hatte ich zuletzt im Informatik-Leistungskurs im Bereich der theoretischen Informatik... eigentlich ganz witzig! ![]()
Digit ::= ["-","+"] ("0"|(["1"|…|"9"]{"0"|…|"9"}))
Anführungszeichen, da du die Zahlen nicht als nichtterminale, sondern als terminale Zeichen verwenden möchtest. Bin mir unsicher, ob das mit der Wiederholung an der Stelle so "erlaubt" war. Habe meine Materialien leider nicht mehr hier. Ich betrachte die "..." als reines "Hier war ich zu faul zum tippen" - denn eigentlich gehören sie dazu. ![]()
Komma ::= ","["0"|...|"9"]{"0"|...|"9"})
Spitzklammern sind mir überhaupt nicht bekannt... kann sein, dass wir die nicht verwendet haben, da wir eine andere Notationsform verwendeten...
Diese "Aussage" bezeichnet alle Wörter, die mit "," beginnen und mindestens eine Zahl zwischen 0 und 9 folgend haben.
Zahl ::= Digit[Komma]
Dieser Grammatikteil behandelt alle Zahlen. Digit kann eine beliebige ganzzahlige Zahl sein (egal ob + oder - oder ohne Vorzeichen) und hat dann ein optionales Komma mit mindestens einer Zahl dahinter. Daher deckt es alle Zahlen - insbesondere deiner genannten - ab.
Meine komplette Fassung:
Digit ::= ["-","+"] ("0"|(["1"|…|"9"]{"0"|…|"9"}))
Komma ::= ","["0"|...|"9"]{"0"|...|"9"})
Zahl ::= Digit[Komma]
Die von dir genannte Grammatik umfasst momentan nichts, ein +, ein - [wobei ich mir hier nicht sicher bin, ob ein einzelnes Anführungszeichen erlaubt ist :P] und daraufhin beliebig viele Nichtterminale, die niemals terminiert werden. Daher würde dir ein Programm der theoretischen Informatik (wie Prolog) wird dir zwar sagen "true", allerdings wird es das auch bei "+Hallo!", einfach weil die Nichtterminalen alles sein könnten. Auch muss deine Zahl aus der Nichtterminalen ( der Nichtterminalen Vorkommateil, der Nichtterminalen ), der Nichtterminalen und der Nichtterminalen Nachkommateil zusammengesetzt werden. Die einzige *vielleicht* Terminale in dem ganzen ist meines Wissenstandes her das optionale "+" bzw. "-".
Ich hoffe, dass das aufschlussreich war, obwohl ich das Thema mit einer anderen Form hatte und hierzu nur spärliche Internetartikel verwenden konnte, um zu prüfen, inwieweit dass von den von mir behandelten Chromsky-Grammatiken abweicht... ![]()