我想更改生成的返回类的getTree()方法的定义,如 statement_return (参见下面的示例)。请参阅下面的示例解析器语法并尊重生成的代码,其中包括statement()和statement_return()。
解析器语法
options {
output = AST;
}
statement
: rule*
-> ^(STATEMENT rule* )
;
生成树分析器
public static class statement_return extends ParserRuleReturnScope {
Object tree;
public Object getTree() {
return tree;
}
};
public final Grammar.statement_return statement() throws RecognitionException {
...
...
}
我想更改生成的类的getTree()方法的定义,如 statement_return ,其中PLSQLTree(扩展CommonTree)是自定义对象。我有自定义的treeAdoptor,它创建了PLSQLTree类型对象,我想捕获TREE PARSER中所需的每个解析器规则的开始和结束标记。我希望语法中的所有规则都一样。
我的首要定义
public static class statement_return extends ParserRuleReturnScope {
Object tree;
public Object getTree() {
/*
start - Add some code in generated class
*/
PLSQLTree plsqlTree = (PLSQLTree) tree;
Token start = this.start;
plsqlTree.params.put(ParserConstants.START_TOKEN, start);
Token stop = this.stop;
plsqlTree.params.put(ParserConstants.STOP_TOKEN, stop);
/*
end - Add some code in generated class
*/
return plsqlTree;
}
};
请帮助我如何实现这一目标?