Получение стартовой позиции токена относительно начала файла
Есть ли надежный способ с помощью antlr4 API, чтобы получить начальную позицию символа токена относительно начала файла, а не строки? Проведя некоторые исследования, я нашел единственный способ использовать некоторую пользовательскую реализацию IntStream, которая не рассматривает '\n' как терминаторы строки, но, возможно, я упускаю какой-то более простой способ? Я использую Visitor API, если это имеет значение.
Приложение, над которым я работаю, анализирует исходные файлы и предоставляет координаты вставки для другого приложения, которое использует предоставленные координаты для вставки дополнительного кода. Было бы гораздо удобнее, если бы другое приложение получало символьную позицию в файле, а не строку line: positionInLine.
1 ответ
Вы можете использовать любое из следующего, в зависимости от того, есть ли у вас Token
или TerminalNode
,
Token.getStartIndex()
TerminalNode.getSourceInterval()
.a
Редактировать: это вернет индекс токена, а не позицию символа.TerminalNode.getSymbol()
.getStartIndex()