2 Ce module contient la classe MCList qui sert à controler la valeur
3 d'une liste de mots-clés facteur par rapport à sa définition portée par un objet
9 class MCList(UserList.UserList):
10 """ Liste semblable a la liste Python
11 mais avec quelques methodes en plus
15 def init(self,nom,parent):
16 self.definition = None
20 self.jdc = self.parent.jdc
21 self.niveau = self.parent.niveau
22 self.etape = self.parent.etape
24 # Le mot cle a été créé sans parent
31 Retourne la "valeur" d'un objet MCList. Sert à construire
32 un contexte d'évaluation pour une expression Python.
33 On retourne l'objet lui-meme.
39 Une autre méthode qui retourne une "autre" valeur d'une MCList
40 Elle est utilisée par la méthode get_mocle
46 Méthode qui supprime toutes les références arrières afin que l'objet puisse
47 être correctement détruit par le garbage collector
53 for child in self.data :
56 def get_child(self,name):
58 Retourne le fils de nom name s'il est contenu dans self
59 Par défaut retourne le fils du premier de la liste
62 # Phase 1 : on cherche dans les fils directs de obj
63 for child in obj.mc_liste :
64 if child.nom == name: return child
65 # Phase 2 : on cherche dans les blocs de self
66 for child in obj.mc_liste:
68 resu = child.get_child(name)
69 if resu != None : return resu
70 # Phase 3 : on cherche dans les entites possibles pour les défauts
71 for k,v in obj.definition.entites.items():
72 #if k == name: return v.defaut
74 if v.defaut != None : return v(None,k,None)
75 # si on passe ici, c'est que l'on demande un fils qui n'est pas possible --> erreur
76 #print "Erreur : %s ne peut être un descendant de %s" %(name,self.nom)
81 Indique si l'objet est de type BLOC
85 def accept(self,visitor):
87 Cette methode permet de parcourir l'arborescence des objets
88 en utilisant le pattern VISITEUR
90 visitor.visitMCList(self)