ich bin in der schule im 2. semester und komm bei einer aufgabe in informatik nicht weiter.
die aufgabe ist, ein parser zu schreiben der wörter nach bestimmten kriterien überprüft.
KRITERIEN sind (EBNF-NOTATION):
1. A ::= "a"...."z" kleine buchstaben
2. B ::= "A"..."Z" große buchstaben
3. C::= A{A} mögliche Folge von kleinen Buchstaben
4. D::= C mögliche Folge von Kleinbuchstaben mit
Großbuchstaben am anfang
=>zusammengefasst:
die wörter können aus einem kleinbuchstaben,
folge von kleinbuchstaben
oder großbuchstaben mit einer folge von kleinbuchstaben
Hier mein python skript:
Code: Alles auswählen
x=raw_input("Geben Sie ein Wort ein ")
kl=["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"]
gr=["A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"]
anz=len(x)
if anz==0: # keine Buchstaben
print "Syntaxfehler"
elif anz==1: # ein Buchstabe
for i in range (0,27):
if x == gr[i]:
print "Syntaxfehler"
break
if x == kl[i]:
print "Wort zulaessig"
break
else: # mehr als ein Buchstabe
for i in range (0,27):
if x[0] == gr[i]: # wenn erster Buchstabe groß ist...
j=0
for j in range(1,anz+1): # wird ab 2. Buchstaben überprüft...
if x[j] == gr[i]: # ob ein großer Buchstabe vorkommt
print "Syntaxfehler"
j=j+1
if x[j] == kl[i]: # ob ein kleiner Buchstabe vorkommt
print "Wort zulaessig"
j=j+1
if x[0] == kl[i]: # wenn erster Buchstabe klein ist...
j=0
for j in range(1,anz+1): # wird ab 2. Buchstaben überprüft...
if x[j] == kl[i]: # ob ein kleiner Buchstabe vorkommt
print "Wort zulaessig"
j=j+1
mit einem buchstaben funzt es. MIT MEHREREN BUCHSTABEN GIBT ES NOCH PROBLEME.......BEI EINER FOLGE VON GROßBUCHSTABEN ZEIGT ER MIR "WORT ZULÄSSIG" AN!!! Es müsste aber "SYNTAXFEHLER" stehen.....WO IST DAS PROBLEM???
wäre sehr dankbar für eure hilfe