problème commentaire multiligne lecture /écriture fichier
mon programme consiste à lire un fichier(c++) et à ecrir dans un aurte fichier temporaire et à chaque fois que je trouve une include fichier.h je rajoute son contenu dans le fichier temporaire
mais j'ai rencontré un probleme avec les commentaire multi lignes, lorsque je trouve un include fichier.h dans un commentaire mon programme le rajouter, et c'est pas correcte
je voudrai donc ignorer ce qui se trouve dans les commentaire multi lignes
mais tout en les rajoutants a mon fichier temporaire bien entendu
exemple de code :
Code:
1 2 3 4 5 6 7
| #ifndef ICK
#define ICK
/*
#include "fichier.h"
*/
#include "ickupdef.h" /* defines */ |
une partie de mon code
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68
|
private void writeIncludeH(String ligne, BufferedWriter tmpwriter,
List<String> inclueFile, String path, List<String> listefichierH)
throws IOException {
BufferedReader lecteurFileHBuffer = null;
if (IsMacro(ligne, "include") && !ligne.startsWith("//")) {
MonfichierH = trouverH(ligne);
if (MonfichierH != null && MonfichierH.endsWith(".h")
&& Strings.containsValue(MonfichierH, inclueFile)
&& !Strings.containsValue(MonfichierH, listefichierH)) {
listeinclude.add(MonfichierH);
listefichierH.add(MonfichierH);
String lineH = ligne.replaceAll(ligne, "//SC++" + ligne);
tmpwriter.write(lineH);//System.err.println(lineH);
tmpwriter.newLine();
try {
lecteurFileHBuffer = new BufferedReader(new FileReader(path
+ MonfichierH));
} catch (FileNotFoundException exc) {
exc.getMessage();
}
while ((ligne = lecteurFileHBuffer.readLine()) != null) {
writeIncludeH(ligne, tmpwriter, inclueFile, path,
listefichierH);
}
lecteurFileHBuffer.close();
tmpwriter.write("//SC--include "
+ listeinclude.get(listeinclude.size() - 1));
tmpwriter.newLine();
listeinclude.remove(listeinclude.size() - 1);
}
else if(!ligne.startsWith("//")){
tmpwriter.write("//" + ligne);
tmpwriter.newLine();
}
} else {
if (IsMacro(ligne, "ifdef" )|| IsMacro(ligne, "endif" )) {
// if (ligne.contains("/*") && !ligne.contains("*/")) {
// ligne = ligne + "*/";
// tmpwriter.write(ligne);
// tmpwriter.newLine();
// }
// if (!ligne.contains("/*") && ligne.contains("*/")) {
// tmpwriter.write(ligne);
// tmpwriter.newLine();
// }
// else {
tmpwriter.write("//SC_MACRO" + ligne);
tmpwriter.newLine();
tmpwriter.write(ligne);
tmpwriter.newLine();
// }
}
else {
tmpwriter.write(ligne);
tmpwriter.newLine();
}
}
} |
cette methode est appelée lors de la lecture du fichier c++
je sais que c'est une question bete :oops: mais la mon cerveau n'arrive plu a fonctionée :cry:
svp help me