next up previous contents
Next: yyless(n). Up: Структура файла lex.yy.c Previous: yywrap().   Contents

yymore().

В обычной ситуации содержимое yytext обновляется всякий раз, когда на входе появляется следующая строка (в yytext всегда находятся символы распознанной цепочки). Иногда возникает необходимость добавить к текущему содержимому yytext следующую распознанную цепочку символов. Для этой цели используется функция yymore. Пример использования функции yymore:

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



2004-06-22