我正在使用树语法来解析在ANTLR 3中解析输入后生成的AST。在walker规则中,嵌入了java代码来填充并返回AST中用于操作输出的自定义java对象
我面临着从语法文件中外化Java代码的挑战。
请考虑以下规则:
Walker.g
val returns [Node node]
@init { Node val= new Node(); }
@after { node = val; }
:
NUMERIC
{
node.setValue($NUMERIC.text); // Node initialisation and population
// inside .g file
}
;
这是一个示例节点类,我用它来存储和操作AST的信息
Node.java
class Node{
String value;
public String getValue(){
return this.value;
}
public void setValue(String text){
this.value = text;
}
}
有没有办法在walker.g文件之外创建节点和填充?