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
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
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)
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 :
# 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]
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)
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.)
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)
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())
#----------------------------------------------------------