Вход/Регистрация
UNIX — универсальная среда программирования
вернуться

Керниган Брайан Уилсон

Шрифт:

 d = pop;

 d.val = (*(double(*))(*pc++))(d.val);

 push(d);

}

eval /* Evaluate variable on stack */ {

 Datum d;

 d = pop;

 if (d.sym->type != VAR && d.sym->type != UNDEF)

execerror("attempt to evaluate non-variable", d.sym->name);

 if (d.sym->type == UNDEF)

execerror("undefined variable", d.sym->name);

 d.val = d.sym->u.val;

push(d);

}

add {

 Datum d1, d2;

 d2 = pop;

 d1 = pop;

 d1.val += d2.val;

 push(d1);

}

sub {

 Datum d1, d2;

 d2 = pop;

 d1 = pop;

 d1.val -= d2.val;

 push(d1);

}

mul {

 Datum d1, d2;

 d2 = pop;

 d1 = pop;

 d1.val *= d2.val;

 push(d1);

}

div {

 Datum d1, d2;

 d2 = pop;

 if (d2.val == 0.0)

execerror("division by zero", (char*)0);

 d1 = pop;

 d1.val /= d2.val;

 push(d1);

}

negate {

 Datum d;

 d = pop;

 d.val = -d.val;

 push(d);

}

gt {

 Datum d1, d2;

 d2 = pop;

 d1 = pop;

 d1.val = (double)(d1.val > d2.val);

 push(d1);

}

lt {

 Datum d1, d2;

 d2 = pop;

 d1 = pop;

 d1.val = (double)(d1.val < d2.val);

 push(d1);

}

ge {

 Datum d1, d2;

 d2 = pop;

 d1 = pop;

 d1.val = (double)(d1.val >= d2.val);

 push(d1);

}

le {

 Datum d1, d2;

 d2 = pop;

 d1 = pop;

 d1.val = (double)(d1.val <= d2.val);

 push(d1);

}

eq {

 Datum d1, d2;

 d2 = pop;

 d1 = pop;

 d1.val = (double)(d1.val == d2.val);

 push(d1);

}

ne {

 Datum d1, d2;

 d2 = pop;

 d1 = pop;

 d1.val = (double)(d1.val != d2.val);

 push(d1);

}

and {

 Datum d1, d2;

 d2 = pop;

 d1 = pop;

 d1.val = (double)(d1.val != 0.0 && d2.val != 0.0);

 push(d1);

}

or {

 Datum d1, d2;

 d2 = pop;

 d1 = pop;

 d1.val = (double)(d1.val != 0.0 || d2.val != 0.0);

 push(d1);

}

not {

  • Читать дальше
  • 1
  • ...
  • 166
  • 167
  • 168
  • 169
  • 170
  • 171
  • 172
  • 173
  • 174
  • 175
  • 176
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: