1 # -*- coding: utf-8 -*-
4 from parseur import FactNode
12 def __init__(self,liste_regles):
14 for item in liste_regles :
16 r=regle(clefRegle,args)
19 def verif(self,commande) :
21 for regle in self.liste :
22 result=regle.verif(commande)
26 #--------------------------------
27 class pasDeRegle(ensembleRegles):
28 #--------------------------------
32 def verif (self,commande) :
40 def __init__(self,clef_regle,args):
41 self.fonction=dictionnaire_regle[clef_regle]
45 def verif(self,commande):
46 f=self.fonction(self.list_args)
47 return f.verif(commande)
49 #---------------------
50 class existeMCFParmi :
51 #---------------------
52 def __init__(self,list_arg):
53 self.listeMCF=list_arg;
55 def verif(self,commande):
57 for c in commande.childNodes :
58 if c.name in self.listeMCF :
63 #----------------------
64 class existeMCsousMCF :
65 #----------------------
66 def __init__(self,list_arg):
68 self.MCF=self.liste[0]
71 def verif(self,commande):
73 for mcf in commande.childNodes :
74 if mcf.name != self.MCF : continue
78 for mc in ll.childNodes:
79 if mc.name != self.MC : continue
83 #-----------------------------------------
84 class nexistepasMCsousMCF(existeMCsousMCF):
85 #-----------------------------------------
86 def __init__(self,list_arg):
87 existeMCsousMCF.__init__(self,list_arg)
90 def verif(self,commande):
91 bool=existeMCsousMCF.verif(self,commande)
98 def __init__(self,list_arg):
101 def cherche_mot(self,niveau,commande):
102 if commande == None : return 0
103 if niveau == len(self.genea) : return 1
104 texte=self.genea[niveau]
105 for c in commande.childNodes :
108 return self.cherche_mot(niveau,c)
111 def verif(self,commande):
112 bool=self.cherche_mot(0,commande)
113 if bool == None : bool = 0
116 #-------------------------------
117 class MCsousMCFaPourValeur :
118 #------------------------------
119 def __init__(self,list_arg):
120 assert (len(list_arg)==4)
121 self.genea=list_arg[0:-2]
127 def verif(self,commande):
129 for mcf in commande.childNodes :
130 if mcf.name != self.MCF : continue
134 for mc in ll.childNodes:
135 if mc.name != self.MC : continue
136 TexteMC=mc.getText(self.Jdc)
137 if (TexteMC.find(self.Val) < 0 ): continue
141 #-------------------------------
142 class MCaPourValeur :
143 #------------------------------
144 def __init__(self,list_arg):
145 assert (len(list_arg)==3)
150 def verif(self,commande):
152 for mc in commande.childNodes :
153 if mc.name != self.MC : continue
154 TexteMC=mc.getText(self.Jdc)
155 if (TexteMC.find(self.Val) < 0 ): continue
159 dictionnaire_regle={"existe":existe,"existeMCFParmi":existeMCFParmi,"existeMCsousMCF":existeMCsousMCF,"nexistepasMCsousMCF":nexistepasMCsousMCF,"MCsousMCFaPourValeur":MCsousMCFaPourValeur,"MCaPourValeur":MCaPourValeur}
160 SansRegle=pasDeRegle()