2011-07-15 1 views
0

source de transformation à l'aide ANTLR (AST, C#)Comment puis-je remplacer le texte de noeud (ANLR, AST)

Je suis en train de transformer le texte source remplaçant "/// Texte ici (trace)" à « WriteLog (modulename , functionname, trace, 'Texte ici'); "

donc je suis en train de remplacer nodetext

for (int i = 0; i < Tree.ChildCount; i++){ 
    if (Tree.GetChild(i).Text == NODE_LOGGING) 
     Tree.GetChild(i).GetChild(0).Text = MyReplace(Tree.GetChild(i).GetChild(0).Text); 
    else .... 

} 

mais le texte de la propriété est en lecture seule, donc il ne fonctionne pas. Est-il possible de changer le texte d'un nœud, puis d'obtenir du texte source modifié ou de cette façon?

Répondre

0

En Java, la chaîne méthode getText() de CommonTree renvoie uniquement le texte jeton associé:

public String getText() { 
    if (token==null) { 
     return null; 
    } 
    return token.getText(); 
} 

Pour obtenir le jeton que vous pouvez appeler Token getToken() de CommonTree et définir le texte jeton via setText vide (Texte de chaîne) de Token.

+0

Dans ma grammaire, il pourrait y avoir des jetons de couple dans un nœud d'AST ... Pourriez-vous placer ici un exemple de remplacement de texte de nœud? – Astronavigator