]> SALOME platform Git repositories - tools/eficas.git/blobdiff - convert/parseur_python.py
Salome HOME
ajout pour accepter les accents sous python 2.3
[tools/eficas.git] / convert / parseur_python.py
index b5a458973b2590ca6152374dc9a670479a715893..213fa691024945cf8709c76f1095dd47153d4203 100644 (file)
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
 #            CONFIGURATION MANAGEMENT OF EDF VERSION
 # ======================================================================
 # COPYRIGHT (C) 1991 - 2002  EDF R&D                  WWW.CODE-ASTER.ORG
@@ -141,9 +142,9 @@ class PARSEUR_PYTHON:
     """
     Cette classe sert à générer un objet PARSEUR_PYTHON qui réalise l'analyse d'un texte 
     représentant un JDC Python en distinguant :
-    - les commentaires inter commandes
-    - les affectations
-    - les commandes
+      - les commentaires inter commandes
+      - les affectations
+      - les commandes
     """
     pattern_commande   = re.compile(r'^([A-Z][A-Z0-9_]+)([ \t\r\f\v]*)\(([\w\W]*)')
     pattern_eval       = re.compile(r'^(EVAL)([ \t\r\f\v]*)\(([\w\W]*)')
@@ -207,11 +208,10 @@ class PARSEUR_PYTHON:
 
     def analyse(self):
         """
-        Transforme dans self.fichier les commentaires Python (#...) par un objet
-        commentaire qui pourra donc être interprété par EFICAS.
-        Stocke le résultat dans self.texte
+        Eclate la chaine self.texte en self.l_objets une liste lignes d'instructions
+        et de commentaires (parmi lesquels des instructions "commentarisées").
         """
-        #l_lignes = open(self.fichier,'r').readlines()
+        #AY##l_lignes = open(self.fichier,'r').readlines()
         l_lignes = string.split(self.texte,'\n')
         commentaire_courant             = None
         commande_courante               = None
@@ -245,6 +245,10 @@ class PARSEUR_PYTHON:
                             # on crée un objet commande_commentarisee_courante
                             commande_commentarisee_courante = COMMANDE_COMMENTARISEE(self)
                             commande_commentarisee_courante.append_text(ligne)
+                        # si la ligne courante se termine par un ';', on décide - par hypothèse et peut-être à tort - que
+                        # la commande commentarisée courante est terminée !!
+                        if re.search( '; *$', ligne ) != None :
+                            commande_commentarisee_courante = None
                         continue
                     else:
                         # on a un double commentaire en fin de ligne
@@ -300,7 +304,8 @@ class PARSEUR_PYTHON:
                         else:
                             #--> poursuite d'une affectation
                             affectation_courante.append_text(ligne)
-                                
+
+
     def get_texte(self):
         """
         Retourne le texte issu de l'analyse