我有一个大文件,我试图用 Java 中的 Antlr 解析,我想展示一下进度。
看起来可以执行以下操作:
CommonTokenStream tokens = new CommonTokenStream(lexer);
int maxTokenIndex = tokens.size();
然后maxTokenIndex
在 aParseTreeListener
中使用:
public void exitMyRule(MyRuleContext context) {
int tokenIndex = context.start.getTokenIndex();
myReportProgress(tokenIndex, maxTokenIndex);
}
后半部分似乎奏效了。我得到不断增加的价值tokenIndex
。但是,tokens.size()
返回 0。这使得无法衡量我取得了多少进展。
有什么好方法可以估计我走了多远?