Программирование >>  Формирование пользовательского контейнера 

1 ... 53 54 55 [ 56 ] 57 58 59 ... 156


static bool tracklndent = true;

tok = ;

ch = fin.getO;

Ищет EOF и возвращает false, если EOF найден. if(!fin) return false;

Читает пробелы, if(isspace(ch)) { while(isspace(ch)) { tok += ch;

Переустанавливает счетчик отступа (indent counter) для каждой новой строки. if(ch == -Nn) {

indent = ;

tracklndent = true;

else if(tracklndent) indent += ch; ch = fin.getO ;

fin.putback(ch); return true;

Перестает отслеживать отступ, обнаружив

первый отличный от пробела символ в строке.

tracklndent = false;

Считывает идентификатор или ключевое слово, if(isalpha(ch) II ch== ) {

while(isalpha(ch) isdigit(ch) ch== ) {

tok += ch;

ch = fin.getO ;

fin.putback(ch); return true;



Расширение С++ У73

Считывает число. if(p.sdigit(ch)) { vAiile(isdigit(ch) ch==. tolower(ch) == е ch == - II ch ==+ ) { tok += ch; ch = fin.getO;

fin.putback(ch); return true;

Ищет символьную комбинацию \ if(ch == W) { ch2 = fin.getO ; if(ch2 == ) { tok += ch; tok += ch2; ch = fin.getO; } else

fin.putback(ch2) ;

Ищет символьную константу if (ch == \ ) { ch2 = fin.getO ; if (ch2 == ) { tok += ch; tok += ch2; return true; } else

fin.putback(ch2);

Ищет начало символов комментария. if(ch == / ) {

tok += ch;

ch = fin.getO;



if(ch == / II ch == *) {

tok += ch;

else fin.putback(ch); return true;

Ищет конец символов комментария, if(ch == *) {

tok += ch;

ch = fin.getO ;

if(ch ==/ ) { tok += ch;

else fin.putback(ch); return true;

tok += ch; return true;

У функции gettokenO ОДИН параметр - строка, именуемая tok и передающая ссылку на объект типа string. Когда функция вернется в вызывающую профамму, в этом объекте будет храниты:я возвращаемая лексема. Функция возвращает true, если лексема прочитана, и false, если достигнут коней файла.

Функция gettokenO начинается с присваивания переменной tok пустой строки (null). Затем читается следующий символ из входного файла fin и запоминается в переменной ch. Если во время чтения обнаружен коней файла, функция возвращает false, в противном случае значение ch проверяется на соответствие нескольким вариантам.

Во-первых, если переменная ch равна пробелу, начинается цикл, в котором считываются пробелы до первого появления символа, отличного от пробела. Считанные пробелы добавляются к значению переменной tok. Прочитанный непробельный символ возвращается во входной поток с помошью вызова функции fin.putbacko. В конце цикла переменная tok содержит все считанные пробелы, и эта лексема возвращается в вызывающую процедуру-В цикле считывания пробелов надо обратить внимание еще на один вариант обработки. Если начинается новая строка, переменной indent присваивается пустая строка и переменной tracklndent - значение true. Пока nepej менная tracklndent равна true, пробелы запоминаются в переменной



1 ... 53 54 55 [ 56 ] 57 58 59 ... 156

© 2006 - 2024 pmbk.ru. Генерация страницы: 0.001
При копировании материалов приветствуются ссылки.
Яндекс.Метрика