如何替换节点文本(ANLR、AST)
使用 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
在Java中,CommonTree的String getText()方法仅返回关联的令牌文本:
要获取令牌,您可以调用CommonTree的Token getToken()并通过Token的void setText(String text)设置令牌文本。
In Java, the String getText() method of CommonTree returns only the associated token text:
To get the token you can call Token getToken() of CommonTree and set the token text via void setText(String text) of Token.