Получение стартовой позиции токена относительно начала файла

Есть ли надежный способ с помощью antlr4 API, чтобы получить начальную позицию символа токена относительно начала файла, а не строки? Проведя некоторые исследования, я нашел единственный способ использовать некоторую пользовательскую реализацию IntStream, которая не рассматривает '\n' как терминаторы строки, но, возможно, я упускаю какой-то более простой способ? Я использую Visitor API, если это имеет значение.

Приложение, над которым я работаю, анализирует исходные файлы и предоставляет координаты вставки для другого приложения, которое использует предоставленные координаты для вставки дополнительного кода. Было бы гораздо удобнее, если бы другое приложение получало символьную позицию в файле, а не строку line: positionInLine.

1 ответ

Решение

Вы можете использовать любое из следующего, в зависимости от того, есть ли у вас Token или TerminalNode,

  • Token.getStartIndex()
  • TerminalNode.getSourceInterval().a Редактировать: это вернет индекс токена, а не позицию символа.
  • TerminalNode.getSymbol().getStartIndex()
Другие вопросы по тегам