-#@ MODIF parseur_python Parsers DATE 05/09/2001 AUTEUR DURAND C.DURAND
# CONFIGURATION MANAGEMENT OF EDF VERSION
# ======================================================================
-# COPYRIGHT (C) 1991 - 2001 EDF R&D WWW.CODE-ASTER.ORG
-# SEE THE FILE "LICENSE.TERMS" FOR INFORMATION ON USAGE AND
-# REDISTRIBUTION OF THIS FILE.
+# COPYRIGHT (C) 1991 - 2002 EDF R&D WWW.CODE-ASTER.ORG
+# THIS PROGRAM IS FREE SOFTWARE; YOU CAN REDISTRIBUTE IT AND/OR MODIFY
+# IT UNDER THE TERMS OF THE GNU GENERAL PUBLIC LICENSE AS PUBLISHED BY
+# THE FREE SOFTWARE FOUNDATION; EITHER VERSION 2 OF THE LICENSE, OR
+# (AT YOUR OPTION) ANY LATER VERSION.
+#
+# THIS PROGRAM IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL, BUT
+# WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED WARRANTY OF
+# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. SEE THE GNU
+# GENERAL PUBLIC LICENSE FOR MORE DETAILS.
+#
+# YOU SHOULD HAVE RECEIVED A COPY OF THE GNU GENERAL PUBLIC LICENSE
+# ALONG WITH THIS PROGRAM; IF NOT, WRITE TO EDF R&D CODE_ASTER,
+# 1 AVENUE DU GENERAL DE GAULLE, 92141 CLAMART CEDEX, FRANCE.
+#
+#
# ======================================================================
import sys,string,re
"""
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]*)')
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
# 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
else:
#--> poursuite d'une affectation
affectation_courante.append_text(ligne)
-
+
+
def get_texte(self):
"""
Retourne le texte issu de l'analyse