|
Программирование >> Формирование пользовательского контейнера
switch (op) { выполняет операцию от: case LT: value = value < partial value; break; case LE: value = value <= partial value; break; case GT: value = value > partial value; break; case GE: value = value >= partial value; break; case EQ: value = value == partial value; break; token type = teirp tok; eval expl(value); Обрабатывает операции отношения, void eval expl(int &value) int partial value; char op; char relops[] = { LT, LE, GT, GE, EQ. NE, 0 eval eзф2 (value); op = * token; if(strchr(relops, op)) { get token(); eval e4>2 (partial value); 370 Оваэ case NE: value = value != partial value; break; Складывает или вычитает два терма. void eval eзф2(int &value) char op; int partial value; char okops[] = { C, INC. DEC, + ,0 eval eзфЗ (value); while((op = *token) == op == - ) { get token(); if(token type == DELIMITER && !strchr(okops, * token)) throw InterpExc(SYNTAX); eval exp3(partial value); switch(op) { добавляет или вычитает case -: value = value - partial value; break; case +: value = value + partial value; break; } . Умножает или делит два фактора. void eval eзфЗ (int &value) { char op; int partial value, t; char okops[] = { (*. INC, DEC, 0 eval exp4(value); vAiile((op = *token) == * op == / II op == % ) { get token(); if(tokentype == DELIMITER && !strchr(okops, * token)) throw InterpExc (SYNTAX) ; eval eзф4(partial value); switch(op) { умножение, деление нацело или остаток от деления нацело case * : value = value * partial value; break; case /: if(partial value == 0) throw InterpExc(DIV BY ZERO); value = (value) / partial value; break; case %: t = (value) / partial value; value = value - (t * partial value); break; Унарные +, -, ++, или ~.
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |