我怎么能取代节点文本(ANLR, AST)
本文关键字:ANLR AST 文本 怎么能 取代 节点 | 更新日期: 2023-09-27 18:02:15
使用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属性是只读的,所以它不起作用。是否有可能改变节点文本,然后得到修改后的源文本,或者那样是有希望的?
在Java中,CommonTree的stringgettext()方法只返回关联的令牌文本:
public String getText() {
if ( token==null ) {
return null;
}
return token.getText();
}
要获得令牌,您可以调用CommonTree的token getToken()并通过token的void setText(String text)设置令牌文本。