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