|
Программирование >> Формирование пользовательского контейнера
tolower(ch) == е I I ch == - I I ch == + ) { tok += ch; ch = fin.get 0 ; fin.putback(ch); return true; Ищет сиьлвольную комбинацию \ * if(ch == -W) { ch2 = fin.get 0 ; 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; Транслирует цикл foreach. void foreach О { string tokai; string varname; string arrayname; char forvamame[5] = .i ; static char counter[2] = a ; Создает управлякадую переменную цикла для генерируемого цикла for, strcat (f orvamame, counter); coxmter[0]++; В файле может быть только 26 циклов foreach, так как число генерируемых управляющих переменных цикла ограничено . диапазоном от ia до iz. При желании это можно изменить, if(counter[0] > z) throw SyntaxExcCToo many foreach loops. ); fout int forvamame = 0;\n ; II Записывает начало генерируемого цикла for. fout indent for( ; skipspaces(); Считывает ( gettoken(token); if(token[0] != ( ) throw SyntaxExc( ( expected in foreach. ); skipspaces(); Получает тип переменной цикла foreach. gettoken(token); fout token ; skipspaces(); Читает и сохраняет имя переменной цикла foreach. gettoken(token); vamame = token; skipspaces(); Читает in , gettoken(token); if(token != in ) throw SyntaxExc( in expected in foreach. ); skipspaces(); Читает имя массива, gettoken(token); arrayname = token; fout vamame = arrayname [0];\n ; Конструирует результирующую строку.
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |