Да, как вы сказали, используя правильный вид AST.
DMS Software Reengineering Toolkit может создавать AST для Java и для C #. Каждый узел AST украшен данными номера строки. Каждый узел AST соответствует правилу грамматики.
Таким образом, проблема определения имени метода для номера строки довольно проста: найдите узел в AST с соответствующим номером строки и поднимайтесь по дереву, пока не будет найден узел AST, представляющий объявление метода; найти поддерево имени метода из этого узла и распечатать его.
Этот прием широко используется в инструментах статического анализа, созданных с использованием DMS, для сообщения имени вызывающего проблемы метода для проблемы, диагностированной по определенному номеру строки. DMS является
предназначен для того, чтобы другие могли создавать такие инструменты статического анализа.