From 8519ba10a8f7f339606ac7afc5f20048d6ee8070 Mon Sep 17 00:00:00 2001 From: Pascale Noyret Date: Thu, 7 Sep 2006 15:32:24 +0000 Subject: [PATCH] *** empty log message *** --- Traducteur/inseremocle.py | 26 ++++++++++++++++++++++---- Traducteur/parseur.py | 5 ++--- Traducteur/removemocle.py | 11 ++++++++++- Traducteur/renamemocle.py | 7 ++----- 4 files changed, 36 insertions(+), 13 deletions(-) diff --git a/Traducteur/inseremocle.py b/Traducteur/inseremocle.py index 4f131280..ded8cf9f 100644 --- a/Traducteur/inseremocle.py +++ b/Traducteur/inseremocle.py @@ -38,6 +38,7 @@ def insereMotCleDansFacteur(jdc,facteur,texte): if debug : print "insereMotCle ", texte , " dans ", facteur.name ancien=jdc.getLine(facteur.lineno ) + # On va chercher la derniere ) pour ajouter avant # on va verifier s il il y a un , avant @@ -49,8 +50,25 @@ def insereMotCleDansFacteur(jdc,facteur,texte): indice = indice -1 if texte[indice] != "," : texte=texte+"," texte=texte+"\n" - debut=ancien.find("_F") + 3 - jdc.splitLine(facteur.lineno,debut) + + ligneaCouper=facteur.lineno + trouve=0 + while ligneaCouper < facteur.endline + 1 : + if ancien.find("_F") > 0 : + indice=ancien.find("_F") + # pour ne pas tenir compte + if ancien[indice+2] in ("("," ") : + trouve=1 + break + ligneaCouper=ligneaCouper+1 + ancien=jdc.getLine(ligneaCouper) + + if trouve : + debut=ancien.find("_F(") + 3 + jdc.splitLine(ligneaCouper,debut) + else : + print "Le traducteur ne sait pas faire" + assert 0 # enleve les blancs en debut de texte i = 0 @@ -58,8 +76,8 @@ def insereMotCleDansFacteur(jdc,facteur,texte): if texte[i] != " " : break i = i +1 - jdc.addLine(texte,facteur.lineno) - jdc.joinLineandNext(facteur.lineno) + jdc.addLine(texte,ligneaCouper) + jdc.joinLineandNext(ligneaCouper) # Gestion du cas particulier du mot clef facteur vide if facteur.childNodes == []: jdc.joinLineandNext(facteur.lineno) diff --git a/Traducteur/parseur.py b/Traducteur/parseur.py index 2f772329..fead5e6c 100644 --- a/Traducteur/parseur.py +++ b/Traducteur/parseur.py @@ -89,12 +89,11 @@ class Keyword(Node): def getText(self,jdc): if self.endline > self.lineno: - lignecourante=self.lineno + 1 debut=jdc.getLines()[self.lineno-1][self.colno:] fin = jdc.getLines()[self.endline-1][:self.endcol] texte=debut - lignecourante=self.lineno + 1 - while lignecourante > self.endline : + lignecourante=self.lineno + while lignecourante < self.endline -1 : texte = texte + jdc.getLines()[lignecourante] lignecourante = lignecourante + 1 if chaineBlanche(fin) == 0 : diff --git a/Traducteur/removemocle.py b/Traducteur/removemocle.py index ecb20f26..77bd8338 100644 --- a/Traducteur/removemocle.py +++ b/Traducteur/removemocle.py @@ -67,8 +67,9 @@ def fusionne(jdc,numLigne): # fusionne la ligne numLigne et numLigne+1 # si la ligne numLigne+1 ne contient que des parentheses # fermantes +# et si la ligne numLigne ne contient pas par un "#" # Attention a la difference de numerotation -# jdc.getLines()[numLigne] donne la ligne numLigne -1 +# jdc.getLines()[numLigne] donne la ligne numLigne + 1 # alors que joinLineandNext(numLigne) travaille sur le tableau index=0 texte=jdc.getLines()[numLigne] @@ -79,6 +80,14 @@ def fusionne(jdc,numLigne): break index=index+1 + if fusion == 0 : return; + + texte=jdc.getLines()[numLigne -1] + if texte.find("#") < 0 : + fusion=1 + else : + fusion=0 + if fusion : import load jdc.joinLineandNext(numLigne) diff --git a/Traducteur/renamemocle.py b/Traducteur/renamemocle.py index d8bc5c6a..646bb864 100644 --- a/Traducteur/renamemocle.py +++ b/Traducteur/renamemocle.py @@ -2,7 +2,8 @@ import logging import sys from parseur import FactNode -debug=1 +#debug=1 +debug=0 #on n'a qu'un mocle par commande. #en fin de traitement, on remet à jour l'arbre syntaxique (lineno,colno,etc.) @@ -27,7 +28,6 @@ def renameMotCle(jdc,command,mocle,new_name): def renameOper(jdc,command,new_name): #------------------------------------------- for c in jdc.root.childNodes: - print c.name if c.name != command:continue if debug:print "Renommage de:",c.name,c.lineno,c.colno logging.info("Renommage de: %s, %s, %s, en %s",c.name,c.lineno,c.colno,new_name) @@ -35,9 +35,6 @@ def renameOper(jdc,command,new_name): jdc.getLines()[c.lineno-1]=s[:c.colno]+new_name+s[c.colno+len(command):] diff=len(new_name) - len(command) decaleLignesdeNBlancs(jdc,c.lineno,c.endline,diff) - #print jdc.getSource() - #import sys - #sys.exit(0) jdc.reset(jdc.getSource()) #---------------------------------------------------------- -- 2.39.2