Lex: сохранение всей строки с использованием начального условия и перехода между состояниями
Мне интересно, возможно ли сохранить весь ввод из начального условия в конечное состояние в lex.
Например:
%x START
%%
"XXX" BEGIN START;
<START>.
<START>"YYY" {printf("%s", yytext);}
Будет печатать YYY
если я введу что-то вроде XXX some chars YYY
, но я бы хотел это напечатать XXX some chars YYY
, Есть ли способ сделать это в lex?
1 ответ
Решение
Вызов yymore()
от каждого действия в начальном состоянии, кроме последнего. yymore()
означает, что есть еще один жетон; это заставляет сканер не сбрасывать начальную точку токена.