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

1 ... 121 122 123 [ 124 ] 125 126 127 ... 156


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;



1 ... 121 122 123 [ 124 ] 125 126 127 ... 156

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