The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

Каталог документации / Раздел "Программирование в Linux" / Оглавление документа
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



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру