|
Программирование >> Формирование пользовательского контейнера
Colon expected Выводит ошибку и номер строки, cout \п е[error]; р p buf; while(р != prog) { находит номер строки с ошибкой Р++; if(*р == -Хг) { linecount++; cout in line linecount endl; temp = p; v4iile(p > p buf && *p != Vn) p-; Отображает ошибочную строку, while(p <= temp) cout *p++; cout endl; Получает лексему-tok types get token() { char *temp; tokentype = UNDEFTT; tok = UNDEFTOK; tenp = token; *temp = \0; Пропускает пробелы. while(isspace(*prog) && *prog) ++prog; Пропускает переход на новую строку, while{*prog == \r) { ++prog; ++prog; Снова пропускает пробелы. while (isspace(*prog) ScSc *prog) ++prog; Проверяет, не конец ли програллы. if(*prog == \0) { ♦token = \0; tok = END; return (tokentype = DELIMITER); Проверяет ограничители блока, if(strchr(--, *prog)) { ♦temp = *prog; t€mp++; ♦temp = XO; prog++; return (token type = BLOCK); Р1щет коьАентарии. if(*prog == /) if(*(prog+l) = *) { знак комьлентария /* prog += 2; do { находит конец KObdbdeHTapHfl while(*prog != *) prog++; . prog++; } while (*prog != /); prog++; return (token type = DELIMITER); } else if (*(prog+l) == /) { знак комьлентария prog += 2; Находит конец комментария. while(*prog != \r && *prog != XO) prog++; if(*prog == \r) prog +=2; , return (tokentype = DELIMITER); Проверяет двойные знаки операций, if(strchr( !<>=+- , *prog)) { switch (*prog) { case =: . if(*(prog+l) == =) { prog++; prog++; ♦temp = EQ; temp++; *teinp = EQ; temp++; *temp = \0; } - break; case ! : if(*(prog+l) == = ){ prog++; prog++; *temp = NE; tenp++; *temp = NE; temp++; *teinp = \0 ; break; case < : if(*(prog+l) == = ) { prog++; prog++; *ternp = LE; teinp++; *temp = LE; else if(*(prog+l) == < ) { prog++; prog++; ♦temp = LS; teinp++; *teinp = LSr else { prog++; ♦temp = LT;- ternp++; ♦temp = \0; break; case >: if(*(prog+l) === ){ prog++; prog++;
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |