| |
В обычной ситуации содержимое yytext обновляется всякий раз, когда
на входе появляется следующая строка (в yytext всегда находятся символы
распознанной цепочки). Иногда возникает необходимость добавить к текущему
содержимому yytext следующую распознанную цепочку символов. Для этой
цели используется функция yymore. Пример использования функции yymore:
.
.
.
\"[^"]* {
if(yytext[yyleng-1]=='\\') yymore();
else
{/*
* Здесь должна быть часть программы,
* обрабатывающая закрывающую кавычку.
*/}
}
.
.
.
В этом примере распознаются строки симвoлов, взятые в двойные кавычки,
причем символ двойных кавычек внутри этой строки может изображаться
с предшествующей косой чертой. ЛА должен распознавать кавычку, ограничивающую
строку, и кавычку, являющуюся частью строки, когда она изображена
как \". Если на вход поступает строка абв\"где",
то сначала будет распознана цепочка "абв
и так как последним символом в этой цепочке будет символ \,
выполнится вызов yymore. В результате к цепочке "абв\
будет добавлено "где, и в yytext мы получим "абв\"где",
что и требовалось.
|
Закладки на сайте Проследить за страницей |
Created 1996-2025 by Maxim Chirkov Добавить, Поддержать, Вебмастеру |