У меня есть большой файл, который я пытаюсь проанализировать с помощью Antlr в Java, и я хотел бы показать прогресс.Отчет о прогрессе анализатора
Похоже, могли бы сделать следующее:
CommonTokenStream tokens = new CommonTokenStream(lexer);
int maxTokenIndex = tokens.size();
, а затем использовать maxTokenIndex
в ParseTreeListener
как таковой:
public void exitMyRule(MyRuleContext context) {
int tokenIndex = context.start.getTokenIndex();
myReportProgress(tokenIndex, maxTokenIndex);
}
Вторая половина, которая, кажется, работает. Я получаю все возрастающие значения для tokenIndex
. Однако tokens.size()
возвращает 0. Это делает невозможным оценить, насколько я достиг прогресса.
Есть ли хороший способ оценить, как далеко я продвигаюсь вперед?