Как я могу заменить текст узла (ANLR, AST) - PullRequest
0 голосов
/ 15 июля 2011

Преобразование источника с использованием ANTLR (AST, C #)

Я пытаюсь преобразовать исходный текст, заменив «/// Text here (trace)» на «WriteLog (имя модуля, имя функции, trace,« Text here »)); "

Поэтому я пытаюсь заменить 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 ....

}

, но свойство Text доступно только для чтения, поэтому оно не работает.Можно ли изменить текст узла, а затем получить измененный исходный текст или, как мы надеемся, таким способом?

1 Ответ

0 голосов
/ 21 июля 2011

В Java метод String getText () CommonTree возвращает только связанный текст токена:

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

Чтобы получить токен, вы можете вызвать Token getToken () CommonTree и установить текст токена через void setText (String text) Token.

...