Позиция символа в сканере с помощью Закона/Flex

В Законе/Flex там способ получить положение в символьном потоке (от запуска файла), в котором появляется маркер? Отчасти как yylineno за исключением того, что это возвращает позицию символа как целое число?

В противном случае, что лучший способ состоит в том, чтобы достигнуть это? Я должен сохранить свой собственный счетчик?

Спасибо!

7
задан ChrisDiRulli 14 February 2010 в 05:31
поделиться

1 ответ

Вы можете отслеживать позицию символа с помощью yyleng и YY_USER_ACTION. yyleng имеет длину текущего токена, YY_USER_ACTION вызывается перед сопоставлением токена. В YY_USER_ACTION добавьте yyleng в переменную position. Вам нужно будет сбрасывать переменную при каждом маркере в конце строки, если вы не хотите получить позицию символа от начала входного потока. В вашем правиле-действии переменная - yyleng является начальной позицией лексемы.

5
ответ дан 7 December 2019 в 12:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: