gpt4 book ai didi

constructor - 强制 ANTLR 在解析器中使用我的自定义 TreeAdaptor

转载 作者:行者123 更新时间:2023-12-02 02:14:33 24 4
gpt4 key购买 nike

ANTLR 解析器生成以下代码:

protected TreeAdaptor adaptor = new CommonTreeAdaptor();

我已经实现了我自己的 TreeAdaptor,并且我希望解析器始终使用我的而不使用 CommonTreeAdaptor()。我发现的唯一方法是每次创建新解析器时都在调用代码中设置它:

Parser parser = new MyParser();
parser.setTreeAdaptor(new MyAdaptor());

有什么方法可以设置默认的 TreeAdaptor 或将一些初始化代码附加到生成的构造函数中?

最佳答案

Is there some way I can set the default TreeAdaptor or append some initialization code to the generated constructor?

一种方法是添加一个设置自定义树适配器的静态方法:

grammar T;

options {
output=AST;
ASTLabelType=CommonTree;
}

@parser::members {

public static TParser newTParser(TreeNodeStream input) {
TParser parser = new TParser(input);
parser.setTreeAdaptor(new MyAdaptor());
return parser;
}
}

parse
: Any* EOF
;

Any
: .
;

然后你可以替换:

TParser parser = new TParser(input);

TParser parser = TParser.newTParser(input);

关于constructor - 强制 ANTLR 在解析器中使用我的自定义 TreeAdaptor,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11194458/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com