Предположим, что у меня есть следующее:
pattern { /* Фильтровать/обрабатывать здесь, затем вызывать */ yymore(); }
Что я хотел бы сделать, так это отфильтровать/обработать некоторые вещи в yytext перед вызовом yymore(). yytext никогда не будет увеличиваться в длину, возможно, только укорачивается при обработке. Для этого потребуется возможность сократить yytext. В качестве отправной точки я попытался выяснить, есть ли простой способ, например. удалить последний символ yytext, но сделать что-то наивное, например
yytext[yyleng-1] = '\0'; ййленг —;
не будет работать. yymore(), кажется, добавляет материал после символа NIL, что указывает на то, что внутри кода, сгенерированного flex, есть некоторый указатель, указывающий на текущий конец yytext. Есть ли какой-то идиоматический способ сделать это без необходимости писать более сложный набор правил?
Такие вещи, как yyless, возвращают вещи во входной поток, а это не то, что мне нужно.