Beispiel #1
0
 def modification_basedefaits(self, ligne):
     if self.affichage_basedefaits.item(
             ligne,
             0) is None or self.affichage_basedefaits.item(
             ligne,
             1) is None:
         return
     if self.desactiver_modification:
         return
     symbole = self.affichage_basedefaits.item(ligne, 0).text().strip()
     valeur = self.affichage_basedefaits.item(ligne, 1).text().strip()
     if symbole != "" and valeur != "":
         try:
             AnalyseurSyntaxique.analyse_symbole(symbole)
             if self.affichage_basedefaits.rowCount() - 1 != ligne:
                 self.cli.basedefaits.modifier(ligne, Fait(
                     symbole, AnalyseurSyntaxique.analyse_valeur_fait(valeur)))
             else:
                 self.cli.basedefaits.ajouter(
                     Fait(symbole, AnalyseurSyntaxique.analyse_valeur_fait(valeur)))
                 self.affichage_basedefaits.setRowCount(
                     self.affichage_basedefaits.rowCount() + 1)
         except Exception as e:
             Log.warning(e)
             self.affichage_basedefaits.setItem(
                 ligne, 0, QTableWidgetItem(
                     self.cli.basedefaits.symbole(ligne)))
Beispiel #2
0
 def lire_fichier(self, nom_fichier):
     if not os.path.isfile(nom_fichier) or not os.access(
             nom_fichier, os.R_OK):
         print("Le fichier {} n'existe pas".format(nom_fichier))
     else:
         nregles = len(self.basederegles.regles)
         nfaits = len(self.basedefaits.faits)
         AnalyseurSyntaxique.analyse_fichier(nom_fichier, self.basedefaits,
                                             self.basederegles)
         print("Ajout de {} faits et {} rêgles".format(
             len(self.basedefaits.faits) - nfaits,
             len(self.basederegles.regles) - nregles))
Beispiel #3
0
 def chainage_arriere(self):
     demandefait = DemandeFait("Chaînage arrière", self)
     rep = demandefait.exec()
     if rep == QDialog.Accepted:
         self.cli.moteur.chainage_arriere(
             self.cli.basedefaits, self.cli.basederegles, Fait(
                 demandefait.symbole.text(), AnalyseurSyntaxique.analyse_valeur(
                     demandefait.valeur.text())), None, None)
         self.mise_a_jour.emit()
Beispiel #4
0
 def commande(self, cmd):
     if cmd.startswith("lire"):
         nom_fichier = cmd.lstrip("lire").strip()
         self.lire_fichier(nom_fichier)
     elif cmd.startswith("reinitialise"):
         self.reinitialiser()
     elif cmd.startswith("trace"):
         niveau = cmd.lstrip("trace").strip()
         if "non" in niveau:
             self.moteur.trace = Trace.NON
             print("Trace " + self.moteur.trace.value)
         elif "min" in niveau:
             self.moteur.trace = Trace.MIN
             print("Trace " + self.moteur.trace.value)
         elif "oui" in niveau:
             self.moteur.trace = Trace.OUI
             print("Trace " + self.moteur.trace.value)
         elif niveau == "":
             print("Trace " + self.moteur.trace.value)
         else:
             print(
                 "ALERTE: Niveau trace non reconnus, valeur possible { oui, min, non }"
             )
     elif cmd.startswith("regle"):
         niveau = cmd.lstrip("regle").strip()
         if "plus" in niveau:
             self.moteur.selection_regle = SelectionRegle.PLUS
             print("Choix de règle par " +
                   self.moteur.selection_regle.value)
         elif "complexe" in niveau:
             self.moteur.selection_regle = SelectionRegle.COMPLEXE
             print("Choix de règle par " +
                   self.moteur.selection_regle.value)
         elif "premiere" in niveau:
             self.moteur.selection_regle = SelectionRegle.PREMIERE
             print("Choix de règle par " +
                   self.moteur.selection_regle.value)
         elif niveau == "":
             print("Règle choisi par " + self.moteur.selection_regle.value)
         else:
             print(
                 "ALERTE: Type règle non reconnus, valeur possible { premiere, complexe, plus }"
             )
     elif cmd.startswith("afficher"):
         affiche = cmd.lstrip("afficher").strip()
         if "faits" in affiche:
             self.afficher_faits()
         elif "regles" in affiche:
             self.afficher_regles()
         elif affiche == "":
             self.afficher_faits()
             self.afficher_regles()
         else:
             print(
                 "ALERTE: Type règle non reconnus, valeur possible { faits, regles }"
             )
     elif cmd.startswith("log"):
         Log.print()
     elif cmd == "av":
         self.chainage_avant()
     elif cmd == "ar":
         self.chainage_arriere()
     elif cmd == "aide" or cmd == "help":
         self.aide()
     elif cmd != "quitter" and cmd != "exit" and cmd != "":
         AnalyseurSyntaxique.analyse_ligne(cmd, self.basedefaits,
                                           self.basederegles)
Beispiel #5
0
 def demande_fait(self):
     print("Nom du fait ?", end=' ')
     nom_fait = input()
     print("Valeur du fait ?", end=' ')
     valeur_fait = input()
     return Fait(nom_fait, AnalyseurSyntaxique.analyse_valeur(valeur_fait))