|
Программирование >> Формирование пользовательского контейнера
378 {2?aS ♦Cetrp = GE; tenp++; *tenp = GE; } else if(*(prog+l) == >) { prog++; prog++; *teirp = RS; teit5>++; *tertl) = RS; else { prog++; ♦tenp = GT; tenp++; *temp = NO; break; case +: if(*(prog+l) == +) { prog++; prog++; *tenp = INC; tenp++; *tenp = INC; tenp++; ♦teitp = \0; break; case -: if{*(prog+l) == -) ( prog++; prog++; *tenp = DEC; tenp++; *tetrp = DEC; tenp++; *tetnp = \0; break; if(*token) retxim(token type = DELIMITER); Проверяет другие ограничители, if (strchr( +-*/%=;: О, *prog)) { *tenp = *prog; prog++; , tenp++; *tenp = \0; return (tokei\ type = DELIMITER) ; Читает строку в кавычках. if(*prog == ) { prog++; while(*prog != £e& *prog != \r £e& *prog) { Ищет escape-последовательность \n. if(*prog == -W) { if(*(prog+l) == n) { prog++; *tenp++ = \n ; else if((teinp - token) < MAX T LEN) *teir5>++ = *prog; prog++; if(*prog == \r II *prog ==0) throw InterpExc (SYNTAX); prog++; *teinp = \0; return (token type = STRING); Читает целое число, if(isdigit(*prog)) { while(!isdelim(*prog)) { if((teinp - token) < MAX ID LEN) *teir5>++ = *prog; prog++; *temp = -XO; return (token type = NUMBER); Читает идентификатор или ключевое слово, if(isalpha(*prog)) { while(!isdelim( prog)) { 380 \ Глаша if ((tenp - token) < MAX ID j:iEN) *tenp++ = *prog; prog++; tokentype = TEMP; *tenp = \0; Определяет, является ли лексема ключевым словом или идентификатором, if (tokerutype == TEMP) { tok = look up(token); преобразует во внутреннюю форму if (tok) token type = ICEYVTORD; ключевое слово else tokei\ type = IDENTIFIER; Проверяет неидентифицированный символ в файле, if(token type == UNDEFTT) throw InterpExc (SYNTAX); return token type; Возвращает лексему во входной поток. void putbackO char *t; t = token; for(; *t; t++) prog-; Ищет внутреннее представление лексеьлл в таблице лексем. token ireps look-up(chcu: *s) { int i; chcu: *p;
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |