IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Eclipse Java Discussion :

Parcourir et modifier un AST


Sujet :

Eclipse Java

  1. #1
    Membre du Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2012
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Avril 2012
    Messages : 35
    Points : 55
    Points
    55
    Par défaut Parcourir et modifier un AST
    Bonjour,

    J'ai un fichier java, et j'ai son AST. A présent, j'aimerais parcourir cet AST puis le modifier, pour modifier directement le coude source.

    J'ai un tutoriel Eclipse sur les AST mais je suis bloqué.

    Quelqu'un saurait-il m'expliquer comment faire ?

    Merci d'avance pour votre aide.

  2. #2
    Membre expert
    Avatar de Gueritarish
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2007
    Messages
    1 800
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2007
    Messages : 1 800
    Points : 3 919
    Points
    3 919
    Par défaut
    Salut,

    Pour récupérer l'AST d'une classe Java, il te faut faire comme suit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject("MyJavaProject");
    try
    {
    	if (project.isNatureEnabled(JavaCore.NATURE_ID))
    	{
    		IJavaProject javaProject = JavaCore.create(project);
    		IPackageFragment[] packageFragments;
    			packageFragments = javaProject.getPackageFragments();
    			IPackageFragment fragment = null;
    			for (IPackageFragment iPackageFragment : packageFragments)
    			{
    				if (iPackageFragment.getKind() == IPackageFragmentRoot.K_SOURCE && "my.package.name".equals(iPackageFragment.getElementName()))
    				{
    					fragment = iPackageFragment;
    					break;
    				}
    			}
    			ASTParser parser = ASTParser.newParser(AST.JLS3);
    			parser.setKind(ASTParser.K_COMPILATION_UNIT);
    			parser.setSource(fragment.getCompilationUnit("MyClassName.java"));
    			parser.setResolveBindings(true);
    			CompilationUnit compil = (CompilationUnit) parser.createAST(null);
    			AST ast = compil.getAST();
    	}
    } catch (JavaModelException jme)
    {
    	jme.printStackTrace();
    } catch (CoreException ce)
    {
    	ce.printStackTrace();
    }
    Ensuite, une fois que tu as ton AST, tu peux le modifier comme tu le souhaites. Tu as un article Eclipse sur les modifications que tu peux apporter (le lien te mène directement à la section sur les modifications de l'AST).

    Voilà, à+
    Gueritarish
    Pas de questions technique par MP, les forums sont là pour ça.

  3. #3
    Membre du Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2012
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Avril 2012
    Messages : 35
    Points : 55
    Points
    55
    Par défaut
    Merci pour ta réponse.
    Moi j'ai l'AST déjà prête. Ce que je veux, c'est remplacer les qualified name par des imports.
    Au lieu de faire je vais transformer cette ligne en:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    import java.lang.String;
    String var;
    C'est juste un exemple, et je ne peux pas utiliser ctrl+shift+m pour le faire sur Eclipse car je veux que ça soit automatique.

    Ce qu'il me faut c'est comment trouver les qualified name dans l'AST pour les stocker quelque part...

    Merci

  4. #4
    Membre du Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2012
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Avril 2012
    Messages : 35
    Points : 55
    Points
    55
    Par défaut reponse
    pour parcourir un AST java il faut utiliser les Visitors c'est le moyen idéal. Je ne suis pas forte dans les visitors mais c'est la solution. Je la donne pour ceux qui auront un jour besoin de faire ce que j'ai fais .
    bon courage à tous

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Parcourir et modifier un char*
    Par Molos dans le forum Débuter
    Réponses: 6
    Dernier message: 02/03/2012, 14h15
  2. Réponses: 11
    Dernier message: 03/08/2010, 17h19
  3. Parcourir et modifier noeuds xml
    Par snopims dans le forum ASP.NET
    Réponses: 1
    Dernier message: 08/12/2008, 12h00
  4. Parcourir et modifier une collection/generique
    Par kaervas dans le forum Débuter
    Réponses: 5
    Dernier message: 24/04/2008, 14h38
  5. Parcourir et modifier Dictionnary
    Par TSalm dans le forum Général Dotnet
    Réponses: 4
    Dernier message: 05/11/2007, 11h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo