Wie erstelle ich diese reguläre Grammatik?

2 Antworten

S' -> 0A' | 1A' | ... | 9A'

A' -> 0B' | 1B' | ... | 9B'

B' -> 0C' | 1C' | ... | 9C'

C' -> -D'

D' -> AE' | BE' | CE' | ... | aE' | bE' | ... | 0E' | ... | 9E'

E' -> AF' | BF' | CF' | ... | aF' | bF' | ... | 0F' | ... | 9F'

F' -> A | B | C | ... | a | b | ... | 0 | ... | 9

wobei S' die Startvariable ist.

Woher ich das weiß:Studium / Ausbildung – Informatikstudium
jonathan155022 
Fragesteller
 16.05.2021, 16:44

Vielen Dank, wie muss ich das am Anfang mit den Ausdrücken kennzeichnen? Muss man nicht immer in geschweiften Klammern angeben was die nicht Terminalen Symbole sind und was die terminalen Symbole sind? also bspw.: nT{0,1} und T{a,b}

0
jaannippon  16.05.2021, 16:48
@jonathan155022

Ja, komplett formal müsstest du die Grammatik so definieren:
G = ({S', A', B', C', D', E', F'}, {0,1,...,9,-,A,B,...,Z,a,b,...,z}, P, S'), wobei P eben die oben genannten Produktionen sind. {S', A', B', C', D', E', F'} sind die Nicht-Terminale (oder auch Variablen) und {0,1,...,9,-,A,B,...,Z,a,b,...,z} die Terminalen (Alphabetssymbole).

0
jonathan155022 
Fragesteller
 16.05.2021, 17:16
@jaannippon

Ah okay, danke, eine frage noch. Wie wird der Bindestrich oben in der Grammatik ausgedrückt und wo also welche Zeile, denke es ist C->D oder? aber woher weiß man dass es der Bindestrich ist

0
S -> dA
A -> dB
....

mit d Element aus [0..9], heißt S wird zu beispielsweise 5A, das wiederum zu 52B usw. usf. .

Wenn ihr keien Terminale gruppieren dürft, dann müßtest Du für jede Ziffer und jeden Buchstaben eine eigene Ableitung(Produktion) hinschreiben.