-
Notifications
You must be signed in to change notification settings - Fork 0
/
verif.py
116 lines (110 loc) · 3.96 KB
/
verif.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
caracteresRegleDroite = 'abcdefghijklmnopqrstuvwxyz123456*-+[]"(){}!?'
caracteresRegleGauche = 'abcdefghijklmnopqrstuvwxyz'
def verifaxiome(decompo) :
if not 'axiome' in decompo :print("INCOMPLET : manque axiome"); return 1;
elif decompo.count('axiome') >1 : print("probleme axiome : nombre d'axiomes > 1"); return 1;
else :
i = decompo.index('axiome');
if i+2 >= len(decompo):
print("manque la valeur de l'axiome")
return 1
if decompo[i+1] != '=' :
print("problème écriture de l'axiome : manque un signe '='")
return 1
elif decompo[i+2].count('"') != 2 :
print("problème écriture de l'axiome")
return 1
elif decompo[i+1] == '=' :
for j in decompo[i+2] :
if j not in caracteresRegleDroite : #TODO
print("caractere incorrect trouvé dans l'axiome :", j)
return 1
return 0
else:
print("Erreur....")
return 1
def verifregles(decompo) :
if not ('regles' in decompo) and not ('regle' in decompo) :
print("INCOMPLET : manque regles"); return 1;
for i in range(len(decompo)) :
if decompo[i] == 'regles' or decompo[i]== 'regle':
if i+2 >= len(decompo):
print("Une règle est vide")
return 1
if decompo[i+1] != '=':
print("problème écriture des regles : manque un signe '='")
return 1
j=2
while decompo[i+j].count('"') == 2 :
if not '=' in decompo[i+j] :
print("manque '=' dans une regle")
return 1
l = decompo[i+j].index('=')
gauche = decompo[i+j][1:l]
droite = decompo[i+j][l+1:-1]
for c in gauche :
if not c in caracteresRegleGauche :
print("caractere incorrect trouvé dans les regles :", c)
return 1
for c in droite :
if not c in caracteresRegleDroite :
print("caractere incorrect trouvé dans les regles :", c)
return 1
j+=1
return 0
def verifangle(decompo) :
if not 'angle' in decompo :
print("INCOMPLET : manque angle"); return 1;
if decompo.count('angle') >1 :
print("probleme angle : nombre d'angles > 1"); return 1;
for i in range(len(decompo)) :
if decompo[i] == 'angle' :
if i+2 >= len(decompo):
print("manque la valeur de l'angle")
return 1
if decompo[i+1] != '=' :
print("problème écriture de l'angle : manque un signe '='")
return 1
for j in str(decompo[i+2]) :
if j not in '0123456789.' :
print(decompo[i+2])
print("caractere incorrect trouvé dans l'angle : "+j)
return 1
return 0
def verifniveau(decompo) :
if not 'niveau' in decompo :
print("INCOMPLET : manque niveau"); return 1;
if decompo.count('niveau') >1 :
print("probleme niveau : nombre de niveaux > 1"); return 1;
for i in range(len(decompo)) :
if decompo[i] == 'niveau' :
if i+2 >= len(decompo):
print("manque la valeur du niveau")
return 1
if decompo[i+1] != '=' :
print("problème écriture du niveau : manque un signe '='")
return 1
for j in str(decompo[i+2]) :
if j not in '0123456789' :
print(decompo[i+2])
print("caractere incorrect trouvé dans le niveau")
return 1
return 0
def veriftaille(decompo) :
if decompo.count('taille') >1 :
print("probleme taille : nombre de tailles > 1"); return 1;
for i in range(len(decompo)) :
if decompo[i] == 'taille' :
if i+2 >= len(decompo):
print("manque la valeur du taille")
return 1
if decompo[i+1] != '=' :
print("problème écriture de la taille : manque un signe '='")
return 1
for j in str(decompo[i+2]) :
if j not in '0123456789.' :
print("caractere incorrect trouvé dans la taille")
return 1
return 0
def verifglob(decompo) :
return (verifaxiome(decompo)==0 and verifregles(decompo)==0 and verifangle(decompo)==0 and verifniveau(decompo)==0 and veriftaille(decompo)==0)