/* $Id$ */ /* * (c) copyright 1987 by the Vrije Universiteit, Amsterdam, The Netherlands. * See the copyright notice in the ACK home directory, in the file "Copyright". */ /* EVALUATION OF BINARY OPERATORS */ #include "LLlex.h" #include "Lpars.h" #include void ch7bin(arith *pval, int oper, arith val) { 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; } }