Начало и окончание позиций с помощью AntLR - PullRequest
0 голосов
/ 11 ноября 2008

В настоящее время я использую AntLR для анализа некоторых файлов на проприетарном языке. Мне нужно выделить его разделы в редакторе (например, подумать о выделении метода в классе Java).

У кого-нибудь есть подсказка, как их получить? Скажите, у меня есть этот код:

function test(param1, param2) {
}

, поскольку функция является ключевым словом, первая позиция, которую я получаю в анализаторе, - это позиция идентификатора "test" Как я могу получить позиции оттуда до конечной фигурной скобки? Список параметров является динамическим, как и следовало ожидать, поэтому вы не знаете заранее его длину.

Спасибо!

Ответы [ 2 ]

1 голос
/ 25 мая 2009

Если я понимаю ваш вопрос, я думаю, вы можете использовать атрибут 'pos' на каждом токене

func: FUNCTION ID '(' ID (',' ID)* ')' {
        System.out.println("Position = " + $FUNCTION.pos);
}

, который относится к позиции символа в строке, начиная с нуля.

0 голосов
/ 11 ноября 2008

Не совсем понятно, почему первая позиция, которую вы получаете, это позиция теста. Вы легко сможете получить смещение символа токена «function», если правильно разработали спецификацию шаблона. Можете ли вы перечислить соответствующие части спецификации?

...