Salome HOME
projects
/
tools
/
eficas.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
PN pour notation scientifique
[tools/eficas.git]
/
generator
/
generator_python.py
diff --git
a/generator/generator_python.py
b/generator/generator_python.py
index a0fbbf7ba6deb121e9462210cc04f73c1c26df4e..460487299ac6e94d776ff8cff0e5fe9c9023649b 100644
(file)
--- a/
generator/generator_python.py
+++ b/
generator/generator_python.py
@@
-28,10
+28,8
@@
import types,string,re
from Noyau import N_CR
from Noyau.N_utils import repr_float
from Noyau import N_CR
from Noyau.N_utils import repr_float
-from Accas import ETAPE,PROC_ETAPE,MACRO_ETAPE,ETAPE_NIVEAU,JDC,FORM_ETAPE
-from Accas import MCSIMP,MCFACT,MCBLOC,MCList,EVAL
-from Accas import GEOM,ASSD,MCNUPLET
-from Accas import COMMENTAIRE,PARAMETRE, PARAMETRE_EVAL,COMMANDE_COMM
+import Accas
+from Extensions.parametre import ITEM_PARAMETRE
from Formatage import Formatage
def entryPoint():
from Formatage import Formatage
def entryPoint():
@@
-76,6
+74,7
@@
class PythonGenerator:
fin='fin CR format python pour python')
# Le texte au format python est stocké dans l'attribut text
self.text=''
fin='fin CR format python pour python')
# Le texte au format python est stocké dans l'attribut text
self.text=''
+ self.appli=None
def writefile(self,filename):
fp=open(filename,'w')
def writefile(self,filename):
fp=open(filename,'w')
@@
-90,6
+89,7
@@
class PythonGenerator:
Si format vaut 'standard', retourne un texte obtenu par concaténation de la liste
Si format vaut 'beautifie', retourne le meme texte beautifié
"""
Si format vaut 'standard', retourne un texte obtenu par concaténation de la liste
Si format vaut 'beautifie', retourne le meme texte beautifié
"""
+ self.appli=obj.appli
liste= self.generator(obj)
if format == 'brut':
self.text=liste
liste= self.generator(obj)
if format == 'brut':
self.text=liste
@@
-109,41
+109,44
@@
class PythonGenerator:
place (dépend des gouts !!!)
"""
# ATTENTION a l'ordre des tests : il peut avoir de l'importance (héritage)
place (dépend des gouts !!!)
"""
# ATTENTION a l'ordre des tests : il peut avoir de l'importance (héritage)
- if isinstance(obj,PROC_ETAPE):
+ if isinstance(obj,
Accas.
PROC_ETAPE):
return self.generPROC_ETAPE(obj)
return self.generPROC_ETAPE(obj)
- elif isinstance(obj,MACRO_ETAPE):
- return self.generMACRO_ETAPE(obj)
- elif isinstance(obj,FORM_ETAPE):
+ # Attention doit etre placé avant MACRO (raison : héritage)
+ elif isinstance(obj,Accas.FORM_ETAPE):
return self.generFORM_ETAPE(obj)
return self.generFORM_ETAPE(obj)
- elif isinstance(obj,ETAPE):
+ elif isinstance(obj,Accas.MACRO_ETAPE):
+ return self.generMACRO_ETAPE(obj)
+ elif isinstance(obj,Accas.ETAPE):
return self.generETAPE(obj)
return self.generETAPE(obj)
- elif isinstance(obj,MCFACT):
+ elif isinstance(obj,
Accas.
MCFACT):
return self.generMCFACT(obj)
return self.generMCFACT(obj)
- elif isinstance(obj,MCList):
+ elif isinstance(obj,
Accas.
MCList):
return self.generMCList(obj)
return self.generMCList(obj)
- elif isinstance(obj,MCBLOC):
+ elif isinstance(obj,
Accas.
MCBLOC):
return self.generMCBLOC(obj)
return self.generMCBLOC(obj)
- elif isinstance(obj,MCSIMP):
+ elif isinstance(obj,
Accas.
MCSIMP):
return self.generMCSIMP(obj)
return self.generMCSIMP(obj)
- elif isinstance(obj,ASSD):
+ elif isinstance(obj,A
ccas.A
SSD):
return self.generASSD(obj)
return self.generASSD(obj)
- elif isinstance(obj,ETAPE_NIVEAU):
+ elif isinstance(obj,
Accas.
ETAPE_NIVEAU):
return self.generETAPE_NIVEAU(obj)
return self.generETAPE_NIVEAU(obj)
- elif isinstance(obj,COMMENTAIRE):
+ elif isinstance(obj,
Accas.
COMMENTAIRE):
return self.generCOMMENTAIRE(obj)
# Attention doit etre placé avant PARAMETRE (raison : héritage)
return self.generCOMMENTAIRE(obj)
# Attention doit etre placé avant PARAMETRE (raison : héritage)
- elif isinstance(obj,PARAMETRE_EVAL):
+ elif isinstance(obj,
Accas.
PARAMETRE_EVAL):
return self.generPARAMETRE_EVAL(obj)
return self.generPARAMETRE_EVAL(obj)
- elif isinstance(obj,PARAMETRE):
+ elif isinstance(obj,
Accas.
PARAMETRE):
return self.generPARAMETRE(obj)
return self.generPARAMETRE(obj)
- elif isinstance(obj,EVAL):
+ elif isinstance(obj,
Accas.
EVAL):
return self.generEVAL(obj)
return self.generEVAL(obj)
- elif isinstance(obj,COMMANDE_COMM):
+ elif isinstance(obj,
Accas.
COMMANDE_COMM):
return self.generCOMMANDE_COMM(obj)
return self.generCOMMANDE_COMM(obj)
- elif isinstance(obj,JDC):
+ elif isinstance(obj,
Accas.
JDC):
return self.generJDC(obj)
return self.generJDC(obj)
- elif isinstance(obj,MCNUPLET):
+ elif isinstance(obj,
Accas.
MCNUPLET):
return self.generMCNUPLET(obj)
return self.generMCNUPLET(obj)
+ elif isinstance(obj,ITEM_PARAMETRE):
+ return self.generITEM_PARAMETRE(obj)
else:
raise "Type d'objet non prévu",obj
else:
raise "Type d'objet non prévu",obj
@@
-229,6
+232,9
@@
class PythonGenerator:
else:
return obj.nom + ' = '+ self.generator(obj.valeur) +';\n'
else:
return obj.nom + ' = '+ self.generator(obj.valeur) +';\n'
+ def generITEM_PARAMETRE(self,obj):
+ return repr(obj)
+
def generPARAMETRE(self,obj):
"""
Cette méthode convertit un PARAMETRE
def generPARAMETRE(self,obj):
"""
Cette méthode convertit un PARAMETRE
@@
-271,11
+277,11
@@
class PythonGenerator:
str = 'reuse ='+ self.generator(obj.reuse) + ','
l.append(str)
for v in obj.mc_liste:
str = 'reuse ='+ self.generator(obj.reuse) + ','
l.append(str)
for v in obj.mc_liste:
- if isinstance(v,MCBLOC) :
+ if isinstance(v,
Accas.
MCBLOC) :
liste=self.generator(v)
for mocle in liste :
l.append(mocle)
liste=self.generator(v)
for mocle in liste :
l.append(mocle)
- elif isinstance(v,MCSIMP) :
+ elif isinstance(v,
Accas.
MCSIMP) :
text=self.generator(v)
l.append(v.nom+'='+text)
else:
text=self.generator(v)
l.append(v.nom+'='+text)
else:
@@
-296,13
+302,11
@@
class PythonGenerator:
l=[]
nom = obj.get_nom()
if nom == '' : nom = 'sansnom'
l=[]
nom = obj.get_nom()
if nom == '' : nom = 'sansnom'
- if len(obj.mc_liste)>0:
- l.append(nom + ' = FORMULE(')
- s=obj.type_retourne + ' = ' + "'''" + obj.arguments + ' = ' + obj.corps+"'''"
- l.append(s)
- l.append(');')
- else:
- l.append(nom+' = FORMULE();')
+ l.append(nom + ' = FORMULE(')
+ for v in obj.mc_liste:
+ text=self.generator(v)
+ l.append(v.nom+'='+text)
+ l.append(');')
return l
def generMACRO_ETAPE(self,obj):
return l
def generMACRO_ETAPE(self,obj):
@@
-310,7
+314,6
@@
class PythonGenerator:
Cette méthode convertit une macro-étape
en une liste de chaines de caractères à la syntaxe python
"""
Cette méthode convertit une macro-étape
en une liste de chaines de caractères à la syntaxe python
"""
- if obj.definition.nom == 'FORMULE' : return self.gen_formule(obj)
try:
if obj.sd == None:
sdname=''
try:
if obj.sd == None:
sdname=''
@@
-326,11
+329,11
@@
class PythonGenerator:
str = "reuse =" + self.generator(obj.reuse) + ','
l.append(str)
for v in obj.mc_liste:
str = "reuse =" + self.generator(obj.reuse) + ','
l.append(str)
for v in obj.mc_liste:
- if isinstance(v,MCBLOC) :
+ if isinstance(v,
Accas.
MCBLOC) :
liste=self.generator(v)
for mocle in liste :
l.append(mocle)
liste=self.generator(v)
for mocle in liste :
l.append(mocle)
- elif isinstance(v,MCSIMP) :
+ elif isinstance(v,
Accas.
MCSIMP) :
text=self.generator(v)
l.append(v.nom+'='+text)
else:
text=self.generator(v)
l.append(v.nom+'='+text)
else:
@@
-345,30
+348,6
@@
class PythonGenerator:
l.append(');')
return l
l.append(');')
return l
- def gen_formule(self,obj):
- """
- Méthode particuliere aux objets de type FORMULE
- """
- try:
- if obj.sd == None:
- sdname=''
- else:
- sdname= self.generator(obj.sd)
- except:
- sdname='sansnom'
- l=[]
- label=sdname + ' = FORMULE('
- l.append(label)
- for v in obj.mc_liste:
- s=''
- s= v.nom+':'+sdname+'('+v.valeur+')'
- l.append(s)
- if len(l) == 1:
- l[0]=label+');'
- else :
- l.append(');')
- return l
-
def generPROC_ETAPE(self,obj):
"""
Cette méthode convertit une PROC étape
def generPROC_ETAPE(self,obj):
"""
Cette méthode convertit une PROC étape
@@
-378,11
+357,11
@@
class PythonGenerator:
label=obj.definition.nom+'('
l.append(label)
for v in obj.mc_liste:
label=obj.definition.nom+'('
l.append(label)
for v in obj.mc_liste:
- if isinstance(v,MCBLOC) :
+ if isinstance(v,
Accas.
MCBLOC) :
liste=self.generator(v)
for mocle in liste :
l.append(mocle)
liste=self.generator(v)
for mocle in liste :
l.append(mocle)
- elif isinstance(v,MCSIMP) :
+ elif isinstance(v,
Accas.
MCSIMP) :
text=self.generator(v)
l.append(v.nom+'='+text)
else:
text=self.generator(v)
l.append(v.nom+'='+text)
else:
@@
-412,12
+391,12
@@
class PythonGenerator:
l=[]
l.append('_F(')
for v in obj.mc_liste:
l=[]
l.append('_F(')
for v in obj.mc_liste:
- if not isinstance(v,
MCSIMP) and not isinstance (v,
MCBLOC) :
+ if not isinstance(v,
Accas.MCSIMP) and not isinstance (v,Accas.
MCBLOC) :
# on est en présence d'une entite composée : on récupère une liste
liste=self.generator(v)
liste[0]=v.nom+'='+liste[0]
l.append(liste)
# on est en présence d'une entite composée : on récupère une liste
liste=self.generator(v)
liste[0]=v.nom+'='+liste[0]
l.append(liste)
- elif isinstance(v,MCBLOC):
+ elif isinstance(v,
Accas.
MCBLOC):
liste=self.generator(v)
for arg in liste :
l.append(arg)
liste=self.generator(v)
for arg in liste :
l.append(arg)
@@
-437,12
+416,12
@@
class PythonGenerator:
Convertit un objet MCList en une liste de chaines de caractères à la
syntaxe python
"""
Convertit un objet MCList en une liste de chaines de caractères à la
syntaxe python
"""
- l=[]
- str = '('
-
l.append(str
)
- for mcfact in obj.data:
- l.append(self.generator(mcfact))
-
l.append('),'
)
+ if len(obj.data) > 1:
+ l=['(']
+
for mcfact in obj.data: l.append(self.generator(mcfact)
)
+ l.append('),')
+ else:
+
l= self.generator(obj.data[0]
)
return l
def generMCBLOC(self,obj):
return l
def generMCBLOC(self,obj):
@@
-452,11
+431,11
@@
class PythonGenerator:
"""
l=[]
for v in obj.mc_liste:
"""
l=[]
for v in obj.mc_liste:
- if isinstance(v,MCBLOC) :
+ if isinstance(v,
Accas.
MCBLOC) :
liste=self.generator(v)
for mocle in liste :
l.append(mocle)
liste=self.generator(v)
for mocle in liste :
l.append(mocle)
- elif isinstance(v,MCList):
+ elif isinstance(v,
Accas.
MCList):
liste=self.generator(v)
liste[0]=v.nom+'='+liste[0]
for mocle in liste :
liste=self.generator(v)
liste[0]=v.nom+'='+liste[0]
for mocle in liste :
@@
-483,7
+462,7
@@
class PythonGenerator:
s = s + "CO('"+ self.generator(val) +"')"
elif val.__class__.__name__ == 'CO':
s = s + "CO('"+ self.generator(val) +"')"
s = s + "CO('"+ self.generator(val) +"')"
elif val.__class__.__name__ == 'CO':
s = s + "CO('"+ self.generator(val) +"')"
- elif isinstance(val,PARAMETRE):
+ elif isinstance(val,
Accas.
PARAMETRE):
# il ne faut pas prendre la string que retourne gener
# mais seulement le nom dans le cas d'un paramètre
s = s + val.nom
# il ne faut pas prendre la string que retourne gener
# mais seulement le nom dans le cas d'un paramètre
s = s + val.nom
@@
-506,7
+485,7
@@
class PythonGenerator:
s = "CO('"+ self.generator(val) +"')"
elif val.__class__.__name__ == 'CO':
s = "CO('"+ self.generator(val) +"')"
s = "CO('"+ self.generator(val) +"')"
elif val.__class__.__name__ == 'CO':
s = "CO('"+ self.generator(val) +"')"
- elif isinstance(val,PARAMETRE):
+ elif isinstance(val,
Accas.
PARAMETRE):
# il ne faut pas prendre la string que retourne gener
# mais seulement le nom dans le cas d'un paramètre
s = val.nom
# il ne faut pas prendre la string que retourne gener
# mais seulement le nom dans le cas d'un paramètre
s = val.nom
@@
-514,7
+493,14
@@
class PythonGenerator:
s = self.generator(val)
elif type(val) == types.FloatType :
# Pour un flottant on utilise str
s = self.generator(val)
elif type(val) == types.FloatType :
# Pour un flottant on utilise str
- s = str(val)
+ # ou la notation scientifique
+ try :
+ clefobj=obj.GetNomConcept()
+ if self.parent.appli.dict_reels.has_key(clefobj):
+ if self.parent.appli.dict_reels[clefobj].has_key(val):
+ s=self.parent.appli.dict_reels[clefobj][val]
+ except:
+ s = str(val)
else :
# Pour les autres types on utilise repr
s = `val`
else :
# Pour les autres types on utilise repr
s = `val`