forked from IF-LK-2020/py-automaten
nea fertig
This commit is contained in:
parent
6831fb32bf
commit
dde7f74789
|
@ -39,4 +39,4 @@ if __name__ == "__main__":
|
|||
if accepted:
|
||||
print(f"Das Wort '{word}' gehört zur Sprache")
|
||||
else:
|
||||
print(f"Das Wort '{word}' gehört nicht zur Sprache")
|
||||
print(f"Das Wort '{word}' gehört nicht zur Sprache")
|
||||
|
|
|
@ -4,20 +4,37 @@ def scan_word(state, word):
|
|||
# Rekursionsabbruch wenn Wort leer (Länge = 0)
|
||||
if len(word) == 0:
|
||||
# Akzeptiert, wenn Automat in Endzustand, z.B.:
|
||||
return state == 1 or state == 3
|
||||
return state == 3
|
||||
|
||||
char = word[0] # Ersten Buchstaben ist die Eingabe
|
||||
word = word[1:] # Ersten Buchstaben vom Restwort abtrennen
|
||||
|
||||
# Übergangsfunktion
|
||||
if state == 0:
|
||||
if char in "0123456789":
|
||||
print("state0")
|
||||
if char == "0":
|
||||
return scan_word(0,word) or scan_word(1,word)
|
||||
elif char in "123456789":
|
||||
return scan_word(0,word)
|
||||
elif char == 0:
|
||||
return scan_word(1,word)
|
||||
if state == 1:
|
||||
if char == 0:
|
||||
return scan_word(2,word)
|
||||
elif state == 1:
|
||||
print("state1")
|
||||
if char == "0":
|
||||
return scan_word(0,word) or scan_word(2,word)
|
||||
elif char == "123456789":
|
||||
return scan_word(0,word)
|
||||
elif state == 2:
|
||||
print("state2")
|
||||
if char in "67":
|
||||
return scan_word(0,word) or scan_word(3,word)
|
||||
elif char in "1234589":
|
||||
return scan_word(0,word)
|
||||
elif state == 3:
|
||||
print("state3")
|
||||
if char in "0123456789":
|
||||
return scan_word(3,word)
|
||||
|
||||
|
||||
|
||||
# Übergänge
|
||||
# siehe nea_abacc.py für ein Beispiel
|
||||
|
||||
|
@ -32,4 +49,4 @@ if __name__ == "__main__":
|
|||
if accepted:
|
||||
print(f"Das Wort '{word}' gehört zur Sprache")
|
||||
else:
|
||||
print(f"Das Wort '{word}' gehört nicht zur Sprache")
|
||||
print(f"Das Wort '{word}' gehört nicht zur Sprache")
|
||||
|
|
Loading…
Reference in New Issue