如何替换节点文本(ANLR、AST)

发布于 2024-11-23 17:03:15 字数 433 浏览 2 评论 0原文

使用 ANTLR (AST、C#) 转换源

我正在尝试将源文本替换为“/// Text here (trace)”到“WriteLog(modulename, functionname, trace, 'Text here');”

所以我试图替换节点文本

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 ....

}

,但属性文本是只读的,所以它不起作用。 是否可以更改节点文本,然后获取修改后的源文本,或者希望这样吗?

Transforming source using ANTLR (AST, C#)

I am trying to transform source text replacing "/// Text here (trace)" to "WriteLog(modulename, functionname, trace, 'Text here');"

So i am trying to replace 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 ....

}

but property Text is readonly, so it does not work.
Is it possible to change node text, and then get modified source text or that way is hopefully ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

何时共饮酒 2024-11-30 17:03:15

在Java中,CommonTree的String getText()方法仅返回关联的令牌文本:

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

要获取令牌,您可以调用CommonTree的Token getToken()并通过Token的void setText(String text)设置令牌文本。

In Java, the String getText() method of CommonTree returns only the associated token text:

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

To get the token you can call Token getToken() of CommonTree and set the token text via void setText(String text) of Token.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文