Положение символов в сканере с использованием Lex / Flex - PullRequest
7 голосов
/ 14 февраля 2010

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

Если нет, как лучше всего это сделать? Нужно ли мне иметь свой счетчик?

Спасибо!

1 Ответ

5 голосов
/ 14 февраля 2010

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

...