Bonjour à tous
je dois parser un fichier C qui n'appartient pas un à projet CDT
j'ai regardé CDOM et PDOM, mais les parseur font toujours référence à un projet
Il y a t 'il un moyen de contourner ce problème
merci d'avance
Version imprimable
Bonjour à tous
je dois parser un fichier C qui n'appartient pas un à projet CDT
j'ai regardé CDOM et PDOM, mais les parseur font toujours référence à un projet
Il y a t 'il un moyen de contourner ce problème
merci d'avance
Bonjour à tous,
j'ai pu trouver une solution , la voici donc ici
la solution passe par la création d'un projet virtuel. En faite je crée par logiciel un projet ou je stocke mes fichiers, et dans ce cas je peux alors parser mes fichiers C
Voici le code d'une méthode permettant de créer un projet, puis d'y inclure un répertoire source ou ou je vais pouvoir placer mes fichiers
ensuite pour placer mes fichiers voici le codeCode:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 private IFolder createProject() { IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot(); virtualProject = root.getProject("VirtualProject"); IFolder folder = null; try { /* Si le projet existe déjà ,je le détruit pour repartir sur une base saine */ if (virtualProject.exists()) { root.delete(true,true,null); } virtualProject.create(null); folder = virtualProject.getFolder("src"); if (!virtualProject.isOpen()) { virtualProject.open(null); } folder.create(IResource.NONE, true, null); } catch (CoreException e) { e.printStackTrace(); } return folder; }
maintenant, il ne reste plus qu'a parser mon fichier comme ceciCode:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 /* Création d'un projet pour stocker les fichiers */ IFolder folder = createProject(); IFile file = folder.getFile(fileObject.getName()); FileInputStream source; try { source = new FileInputStream(fileObject.getFullPath()); try { file.create(source, IResource.NONE, null); } catch (CoreException e) { e.printStackTrace(); } } catch (FileNotFoundException e) { e.printStackTrace(); }
fileObject est un objet d'une classe que j'ai écrit. cela permet de sotcker un nom de fichier et aussi le chemin complet au fichierCode:
1
2
3
4
5
6
7
8
9 IParserConfiguration conf = new ParserConfiguration(); IASTTranslationUnit tu; try { tu = dom.getTranslationUnit(file,new CodeReaderFactory(),conf); Activator.msgStream.println("parse du fichier " + fileObject.getName() + " faite"); } catch (UnsupportedDialectException e) { // TODO Auto-generated catch block e.printStackTrace(); }
ParserConfiguration est aussi une classe que j'ai écrite et qui permet de personnaliser mon scanner. Le reste est standard CDT
Cordialement