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

1 ... 133 134 135 [ 136 ] 137 138 139 ... 156


for(;;) {

Получает значение условного вь53с1жения. eval exp(cond) ;

if(*token != ; ) throw InterpExc(SEMI EXPECTED); prog++; переходит за в исходном коде tenp2 = prog;

Ищет начало блока for. paren = 1; while(paren) { get token();

if(*token == () paren++; if(*token == )) paren--;

Подтверлщает начало блока. get token (); if(*token != {)

throw InterpExc (BRACE EXPECTED); putbackO ;

Если условие true, интерпретирует, if(cond) interpO ;

else { в противном случае переходит к концу блока findeobO; return;

prog = tenp2; переходит к инкрементному выражению

Ищет оператор break в цикле, if(breakfound) {

Ищет начало блока в цикле.

do {

get token();

} while(*token != { && tok != END); *



putbackO; breakfoimd = false;

find eobO; теперь ищет конец цикла return;

Вычисляет инкрементное выражение. eval exp(cond);

prog = tenp; возвращается к началу цикла

Выполняет оператор cout.

void exec cout()

int val; get token();

if(*token != LS) throw InterpExc(SYNTAX);

do {

get token();

if(token type==STRING) { Выводит строку, cout token;

else if(tokentype == NUMBER

tokentype == IDENTIFIER) { Выводит число. putbackO; eval exp(val); cout val;

else if(*token == -N ) {

выводит символьную константу. putbackO ; eval exp(val);



Вьшолняет оператор cin.

void exec cin()

int val; char chval; tokenireps vtype;

get token();

if(*token != RS) throw InterpExc(SYNTAX);

do {

get token();

if(token type != IDENTIFIER) throw InterpExc(NOT VAR);

vtype = find var type(token);

if(vtype == CHAR) { cin chval; assign var(token, chval);

else if(vtype == INT) { cin val;

assign var(token, val);

get token(); } while(*token == RS);

if (*token != ; ) throw InterpExc(SEMI EXPECTED) ;

cout (char) val;

get token(); } while(*token == LS);

if(*token != ;) throw InterpExc(SEMI EXPECTED);



1 ... 133 134 135 [ 136 ] 137 138 139 ... 156

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