我正在解析一条消息,并在进行解析时创建一个自定义对象message。我想知道性能方面,在解析器操作中还是在其他地方创建对象更好?
现在我正在重写退出规则方法。
parser.addParseListener(new MessageGrammarBaseListener(){
MessageType message = null;
@Override
public void exitStartofMessage(StartofMessageContext ctx) {
message = new MessageType();
}
@Override
public void exitPersonalInformation( PersonalInformationContext ctx) {
Person p = new Person();
p.setName(ctx.name.getText());
message.setPersonalInformation(p);
}
(...)
});
这样做更好还是在解析器操作中更好?
将解析过程和AST旁路分开是一种很好的做法,因为解析可以在不同的运行时实现。这些操作也是不同的逻辑步骤。所以我认为你做每件事都是正确的。