ack/lang/cem/cpp.ansi/ch3bin.c
1989-10-23 13:00:35 +00:00

81 lines
1.3 KiB
C

/*
* (c) copyright 1987 by the Vrije Universiteit, Amsterdam, The Netherlands.
* See the copyright notice in the ACK home directory, in the file "Copyright".
*/
/* $Header$ */
/* EVALUATION OF BINARY OPERATORS */
#include "Lpars.h"
#include "arith.h"
ch3bin(pval, oper, val)
register arith *pval, val;
int oper;
{
switch (oper) {
case '%':
if (val == 0)
error("% by 0");
else
*pval = *pval % val;
break;
case '/':
if (val == 0)
error("/ by 0");
else
*pval = *pval / val;
break;
case '*':
*pval = *pval * val;
break;
case '+':
*pval = *pval + val;
break;
case '-':
*pval = *pval - val;
break;
case LEFT:
*pval = *pval << val;
break;
case RIGHT:
*pval = *pval >> val;
break;
case '<':
*pval = (*pval < val);
break;
case '>':
*pval = (*pval > val);
break;
case LESSEQ:
*pval = (*pval <= val);
break;
case GREATEREQ:
*pval = (*pval >= val);
break;
case EQUAL:
*pval = (*pval == val);
break;
case NOTEQUAL:
*pval = (*pval != val);
break;
case '&':
*pval = *pval & val;
break;
case '^':
*pval = *pval ^ val;
break;
case '|':
*pval = *pval | val;
break;
case AND:
*pval = (*pval && val);
break;
case OR:
*pval = (*pval || val);
break;
case ',':
*pval = val;
break;
}
}