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

1 ... 118 119 120 [ 121 ] 122 123 124 ... 156


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;

Унарные +, -, ++, или ~.



1 ... 118 119 120 [ 121 ] 122 123 124 ... 156

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