Compilerbauhome Compilerbau: Transformation: RE -> NFA Prof. Dr. Uwe Schmidt FH Wedel

Transformation: RE -> NFA

weiter

weiter

Transformation regulärer Ausdrücke in nichtdeterministische endliche Automaten

RE
regulärer Ausdruck
regular expression
Legende
1 ist immer der Startzustand
2 ist der Endzustand
das rote epsilon (e) steht für die leere Zeichenfolge, also für spontane Übergänge
leere Zeichenfolge
 
weiter
ein Zeichen: a
 
weiter
eine Sequenz: abc
 
weiter
eine Auswahl von Zeichen: a|b|c
 
merke
Hier steht die eine Kante mit dem Zeichenintervall [a-c] als Marke abkürzend für 3 Kanten mit den Marken a, b und c.
weiter
eine allgemeine Auswahl: |a|bb
 
weiter
eine Wiederholung: a*
Sonderfall einer Auswahl (|a+)
 
weiter
eine Wiederholung: a+
 
weiter
eine Option: a?
Sonderfall einer Auswahl (a|)
 
weiter
Beispiel:
(aa)*|(aaa)*
alle Folgen von 2 oder 3 a's:
{ ε, aa, aaa, aaaa, aaaaaa, aaaaaaaa, aaaaaaaaa, ...}
 
weiter
Beispiel:
|(aa)+|(aaa)+
die gleiche reguläre Menge noch einmal
 
weiter
Beispiel:
c*a(a|c)*b(a|b|c)*
Alphabet A = {a, b, c}
alle Wörter, in denen das 1. a vor dem 1.b steht
weiter
Beispiel:
((b|c)*a(b|c)*a)*(b|c)*
Alphabet A = {a, b, c}
alle Wörter mit gerader Anzahl von a's
weiter
Beispiel:
if|[a-z][a-z0-9]*
if oder identifier
weiter
Beispiel:
if|then|else|
[a-z][a-z0-9]*
if, then, else oder identifier
weiter
Beispiel:
if|then|else|
begin|end|
while|do|for|to|
[a-z][a-z0-9]*
|[0-9]+
Schlüsselwörter, Bezeichner und Zahlen

Letzte Änderung: 21.11.2018
© Prof. Dr. Uwe Schmidt
Prof. Dr. Uwe Schmidt FH Wedel