Pristine Ack-5.5
[Ack-5.5.git] / util / cpp / ch7bin.c
1 /* $Id: ch7bin.c,v 1.6 1994/06/24 10:17:58 ceriel Exp $ */
2 /*
3  * (c) copyright 1987 by the Vrije Universiteit, Amsterdam, The Netherlands.
4  * See the copyright notice in the ACK home directory, in the file "Copyright".
5  */
6 /* EVALUATION OF BINARY OPERATORS */
7
8 #include        "Lpars.h"
9 #include        <em_arith.h>
10
11 ch7bin(pval, oper, val)
12         register arith *pval, val;
13         int oper;
14 {
15         switch (oper)   {
16         case '%':
17                 if (val == 0)
18                         error("%% by 0");
19                 else
20                         *pval = *pval % val;
21                 break;
22         case '/':
23                 if (val == 0)
24                         error("/ by 0");
25                 else
26                         *pval = *pval / val;
27                 break;
28         case '*':
29                 *pval = *pval * val;
30                 break;
31         case '+':
32                 *pval = *pval + val;
33                 break;
34         case '-':
35                 *pval = *pval - val;
36                 break;
37         case LEFT:
38                 *pval = *pval << val;
39                 break;
40         case RIGHT:
41                 *pval = *pval >> val;
42                 break;
43         case '<':
44                 *pval = (*pval < val);
45                 break;
46         case '>':
47                 *pval = (*pval > val);
48                 break;
49         case LESSEQ:
50                 *pval = (*pval <= val);
51                 break;
52         case GREATEREQ:
53                 *pval = (*pval >= val);
54                 break;
55         case EQUAL:
56                 *pval = (*pval == val);
57                 break;
58         case NOTEQUAL:
59                 *pval = (*pval != val);
60                 break;
61         case '&':
62                 *pval = *pval & val;
63                 break;
64         case '^':
65                 *pval = *pval ^ val;
66                 break;
67         case '|':
68                 *pval = *pval | val;
69                 break;
70         case AND:
71                 *pval = (*pval && val);
72                 break;
73         case OR:
74                 *pval = (*pval || val);
75                 break;
76         case ',':
77                 *pval = val;
78                 break;
79         }
80 }