Я думаю, что видел это, и у меня недостаточно очков, чтобы «комментировать», но позвольте мне сначала задать вопрос; Похоже, вы пытаетесь создать внешнюю версию AST на стр. 137. Вы взяли примеры и переименовали их в уже созданную вами грамматику. Я собираюсь предположить, что остальная часть работает, или у вас было бы намного больше ошибок, чем этот! Это цель? Вы после просто вызова методов / классов или вы после полного однородного AST?
Это зависит от точек входа грамматики. Это не так очевидно в книге, как кажется. Вы ссылаетесь на functionDecl, который выглядит как запись в Cymbol.g4, но не существует в Java .g4. Поэтому вместо JavaParser.FunctionDeclContext я предлагаю JavaParser.classOrInterfaceDeclarationContext. Следует подтянуть правильный метод. Я также признаюсь, что я не знаю, на что будет отображаться exitCall. Я мог бы использовать освещение на этом сам.
Были ли вы после всего AST или только граф вызовов? Если весь AST, я думаю, что вы можете использовать enterEveryRule или ExitEveryRule для этого, но подтверждение было бы хорошо.
Итак, начните с регенерации вашей грамматики, измените вашу программу так, чтобы она ссылалась на точку входа правила в файлах .g4, а затем посмотрите, все ли работает.
Спасибо