Pristine Ack-5.5
[Ack-5.5.git] / lang / cem / ctest / ctgen / OPS
1 ISTART
2 FN() {
3 teff() ; tass() ; tsta() ; tasssta() ; tiff() ; tifass() ;
4 return 0 ;
5 }
6 teff() {
7 /* simple operator test */
8 /* first evaluate for side effects */
9 LSTART
10 X + Y
11 X - Y
12 X / Y
13 X % Y
14 X * Y
15 X & Y
16 X | Y
17 X ^ Y
18 X || Y
19 X && Y
20 X << S
21 X >> S
22 -X 
23 !X 
24 ~X 
25 X == Y
26 X != Y
27 X <= Y
28 X >= Y
29 X < Y
30 X > Y
31 X ? X : Y
32 }
33 tass() {
34 LSTART
35 /* assignment ops */
36 Z1 = X 
37 Z1 += X 
38 Z1 -= X 
39 Z1 /= X 
40 Z1 %= X 
41 Z1 *= X 
42 Z1 &= X 
43 Z1 |= X 
44 Z1 ^= X 
45 Z1 <<= S
46 Z1 >>= S
47 Z1 ++
48 Z1 --
49 -- Z1
50 ++ Z1
51 }
52 tsta() {
53 /* secondly evaluate and use the value */
54 LSTART
55 Z2 = ( X + Y )
56 Z2 = ( X - Y )
57 Z2 = ( X / Y )
58 Z2 = ( X % Y )
59 Z2 = ( X * Y )
60 Z2 = ( X & Y )
61 Z2 = ( X | Y )
62 Z2 = ( X ^ Y )
63 Z2 = ( X || Y )
64 Z2 = ( X && Y )
65 Z2 = ( X << S )
66 Z2 = ( X >> S )
67 Z2 = ( -X  )
68 Z2 = ( !X  )
69 Z2 = ( ~X  )
70 Z2 = ( X == Y )
71 Z2 = ( X != Y )
72 Z2 = ( X <= Y )
73 Z2 = ( X >= Y )
74 Z2 = ( X < Y )
75 Z2 = ( X > Y )
76 Z2 = ( X ? X : Y )
77 }
78 tasssta() {
79 /* assignment ops */
80 LSTART
81 Z2 = ( Z1 = X  )
82 Z2 = ( Z1 += X  )
83 Z2 = ( Z1 -= X  )
84 Z2 = ( Z1 /= X  )
85 Z2 = ( Z1 %= X  )
86 Z2 = ( Z1 *= X  )
87 Z2 = ( Z1 &= X  )
88 Z2 = ( Z1 |= X  )
89 Z2 = ( Z1 ^= X  )
90 Z2 = ( Z1 <<= S )
91 Z2 = ( Z1 >>= S )
92 Z2 = ( Z1 ++ )
93 Z2 = ( Z1 -- )
94 Z2 = ( -- Z1 )
95 Z2 = ( ++ Z1 )
96 }
97 tiff() {
98 LSTART
99 /* conditional context */
100 if ( X + Y ) yes() ; else no()
101 if ( X - Y ) yes() ; else no()
102 if ( X / Y ) yes() ; else no()
103 if ( X % Y ) yes() ; else no()
104 if ( X * Y ) yes() ; else no()
105 if ( X & Y ) yes() ; else no()
106 if ( X | Y ) yes() ; else no()
107 if ( X ^ Y ) yes() ; else no()
108 if ( X || Y ) yes() ; else no()
109 if ( X && Y ) yes() ; else no()
110 if ( X << S ) yes() ; else no()
111 if ( X >> S ) yes() ; else no()
112 if ( -X  ) yes() ; else no()
113 if ( !X  ) yes() ; else no()
114 if ( ~X  ) yes() ; else no()
115 if ( X == Y ) yes() ; else no()
116 if ( X != Y ) yes() ; else no()
117 if ( X <= Y ) yes() ; else no()
118 if ( X >= Y ) yes() ; else no()
119 if ( X < Y ) yes() ; else no()
120 if ( X > Y ) yes() ; else no()
121 if ( X ? X : Y ) yes() ; else no()
122 }
123 tifass() {
124 LSTART
125 /* assignment ops */
126 if ( Z1 = X  ) yes() ; else no()
127 if ( Z1 += X  ) yes() ; else no()
128 if ( Z1 -= X  ) yes() ; else no()
129 if ( Z1 /= X  ) yes() ; else no()
130 if ( Z1 %= X  ) yes() ; else no()
131 if ( Z1 *= X  ) yes() ; else no()
132 if ( Z1 &= X  ) yes() ; else no()
133 if ( Z1 |= X  ) yes() ; else no()
134 if ( Z1 ^= X  ) yes() ; else no()
135 if ( Z1 <<= S ) yes() ; else no()
136 if ( Z1 >>= S ) yes() ; else no()
137 if ( Z1 ++ ) yes() ; else no()
138 if ( Z1 -- ) yes() ; else no()
139 if ( -- Z1 ) yes() ; else no()
140 if ( ++ Z1 ) yes() ; else no()
141 }
142 yes() { printf("yes ") ; }
143 no() { printf("no ") ; }