1 /*******************************************************************************
2 * Copyright (c) 2000, 2003 IBM Corporation and others.
3 * All rights reserved. This program and the accompanying materials
4 * are made available under the terms of the Common Public License v1.0
5 * which accompanies this distribution, and is available at
6 * http://www.eclipse.org/legal/cpl-v10.html
9 * IBM Corporation - initial API and implementation
10 *******************************************************************************/
11 package net.sourceforge.phpeclipse.internal.compiler.ast;
13 public abstract class OperatorExpression extends Expression implements OperatorIds {
15 public static int[][] ResolveTypeTables = new int[NumberOfTables][];
17 static {classInitialize();}
20 * OperatorExpression constructor comment.
22 public OperatorExpression() {
25 public static final void classInitialize() {
26 ResolveTypeTables[AND] = get_AND();
27 ResolveTypeTables[AND_AND] = get_AND_AND();
28 ResolveTypeTables[DIVIDE] = get_DIVIDE();
29 ResolveTypeTables[EQUAL_EQUAL] = get_EQUAL_EQUAL();
30 ResolveTypeTables[GREATER] = get_GREATER();
31 ResolveTypeTables[GREATER_EQUAL] = get_GREATER_EQUAL();
32 ResolveTypeTables[LEFT_SHIFT] = get_LEFT_SHIFT();
33 ResolveTypeTables[LESS] = get_LESS();
34 ResolveTypeTables[LESS_EQUAL] = get_LESS_EQUAL();
35 ResolveTypeTables[MINUS] = get_MINUS();
36 ResolveTypeTables[MULTIPLY] = get_MULTIPLY();
37 ResolveTypeTables[OR] = get_OR();
38 ResolveTypeTables[OR_OR] = get_OR_OR();
39 ResolveTypeTables[PLUS] = get_PLUS();
40 ResolveTypeTables[REMAINDER] = get_REMAINDER();
41 ResolveTypeTables[RIGHT_SHIFT] = get_RIGHT_SHIFT();
42 ResolveTypeTables[UNSIGNED_RIGHT_SHIFT] = get_UNSIGNED_RIGHT_SHIFT();
43 ResolveTypeTables[XOR] = get_XOR();
46 public static final String generateTableTestCase(){
47 //return a String which is a java method allowing to test
48 //the non zero entries of all tables
51 org.eclipse.jdt.internal.compiler.ast.
52 OperatorExpression.generateTableTestCase();
55 int[] operators = new int[]{AND,AND_AND,DIVIDE,GREATER,GREATER_EQUAL,
56 LEFT_SHIFT,LESS,LESS_EQUAL,MINUS,MULTIPLY,OR,OR_OR,PLUS,REMAINDER,
57 RIGHT_SHIFT,UNSIGNED_RIGHT_SHIFT,XOR};
60 public final String constant(int code){
62 case T_boolean : return "true" ; //$NON-NLS-1$
63 case T_byte : return "((byte) 3)" ; //$NON-NLS-1$
64 case T_char : return "'A'" ; //$NON-NLS-1$
65 case T_double : return "300.0d" ; //$NON-NLS-1$
66 case T_float : return "100.0f" ; //$NON-NLS-1$
67 case T_int : return "1" ; //$NON-NLS-1$
68 case T_long : return "7L" ; //$NON-NLS-1$
69 case T_String : return "\"hello-world\"" ; //$NON-NLS-1$
70 case T_null : return "null"; //$NON-NLS-1$
71 case T_short : return "((short) 5)"; //$NON-NLS-1$
72 case T_Object : return "null";} //$NON-NLS-1$
73 return "";} //$NON-NLS-1$
75 public final String type(int code){
77 case T_boolean : return "z" ; //$NON-NLS-1$
78 case T_byte : return "b" ; //$NON-NLS-1$
79 case T_char : return "c" ; //$NON-NLS-1$
80 case T_double : return "d" ; //$NON-NLS-1$
81 case T_float : return "f" ; //$NON-NLS-1$
82 case T_int : return "i" ; //$NON-NLS-1$
83 case T_long : return "l" ; //$NON-NLS-1$
84 case T_String : return "str" ; //$NON-NLS-1$
85 case T_null : return "null"; //$NON-NLS-1$
86 case T_short : return "s"; //$NON-NLS-1$
87 case T_Object : return "obj";} //$NON-NLS-1$
88 return "xxx";} //$NON-NLS-1$
90 public final String operator(int operator){
92 case EQUAL_EQUAL : return "=="; //$NON-NLS-1$
93 case LESS_EQUAL : return "<="; //$NON-NLS-1$
94 case GREATER_EQUAL :return ">="; //$NON-NLS-1$
95 case LEFT_SHIFT : return "<<"; //$NON-NLS-1$
96 case RIGHT_SHIFT : return ">>"; //$NON-NLS-1$
97 case UNSIGNED_RIGHT_SHIFT : return ">>>"; //$NON-NLS-1$
98 case OR_OR :return "||"; //$NON-NLS-1$
99 case AND_AND : return "&&"; //$NON-NLS-1$
100 case PLUS : return "+"; //$NON-NLS-1$
101 case MINUS : return "-"; //$NON-NLS-1$
102 case NOT : return "!"; //$NON-NLS-1$
103 case REMAINDER : return "%"; //$NON-NLS-1$
104 case XOR : return "^"; //$NON-NLS-1$
105 case AND : return "&"; //$NON-NLS-1$
106 case MULTIPLY : return "*"; //$NON-NLS-1$
107 case OR : return "|"; //$NON-NLS-1$
108 case TWIDDLE : return "~"; //$NON-NLS-1$
109 case DIVIDE : return "/"; //$NON-NLS-1$
110 case GREATER : return ">"; //$NON-NLS-1$
111 case LESS : return "<"; }; //$NON-NLS-1$
112 return "????";} //$NON-NLS-1$
116 Decode decode = new Decode();
119 s = "\tpublic static void binaryOperationTablesTestCase(){\n" + //$NON-NLS-1$
121 "\t\t//TC test : all binary operation (described in tables)\n"+ //$NON-NLS-1$
122 "\t\t//method automatically generated by\n"+ //$NON-NLS-1$
123 "\t\t//org.eclipse.jdt.internal.compiler.ast.OperatorExpression.generateTableTestCase();\n"+ //$NON-NLS-1$
125 "\t\tString str0 ;\t String str\t= "+decode.constant(T_String)+";\n"+ //$NON-NLS-1$ //$NON-NLS-2$
126 "\t\tint i0 ;\t int i\t= "+decode.constant(T_int)+" ;\n"+ //$NON-NLS-1$ //$NON-NLS-2$
127 "\t\tboolean z0;\t boolean z\t= "+decode.constant(T_boolean)+";\n"+ //$NON-NLS-1$ //$NON-NLS-2$
128 "\t\tchar c0; \t char c\t= "+decode.constant(T_char)+" ;\n"+ //$NON-NLS-1$ //$NON-NLS-2$
129 "\t\tfloat f0; \t float f\t= "+decode.constant(T_float)+" ;\n"+ //$NON-NLS-1$ //$NON-NLS-2$
130 "\t\tdouble d0;\t double d\t= "+decode.constant(T_double)+" ;\n"+ //$NON-NLS-1$ //$NON-NLS-2$
131 "\t\tbyte b0; \t byte b\t= "+decode.constant(T_byte)+";\n"+ //$NON-NLS-1$ //$NON-NLS-2$
132 "\t\tshort s0; \t short s\t= "+decode.constant(T_short)+";\n"+ //$NON-NLS-1$ //$NON-NLS-2$
133 "\t\tlong l0; \t long l\t= "+decode.constant(T_long)+" ;\n"+ //$NON-NLS-1$ //$NON-NLS-2$
134 "\t\tObject obj0; \t Object obj\t= "+decode.constant(T_Object)+" ;\n"+ //$NON-NLS-1$ //$NON-NLS-2$
138 for (int i=0; i < operators.length ; i++)
139 { int operator = operators[i];
140 for (int left=0; left<16;left++)
141 for (int right=0; right<16;right++)
142 { int result = (ResolveTypeTables[operator][(left<<4)+right]) & 0x0000F;
143 if (result != T_undefined)
145 //1/ First regular computation then 2/ comparaison
146 //with a compile time constant (generated by the compiler)
148 // if ( z0 != (((short) 5) >= ((short) 5)))
149 // System.out.println(155);
151 { s += "\t\t"+decode.type(result)+"0"+" = "+decode.type(left); //$NON-NLS-1$ //$NON-NLS-3$ //$NON-NLS-2$
152 s += " "+decode.operator(operator)+" "+decode.type(right)+";\n"; //$NON-NLS-2$ //$NON-NLS-1$ //$NON-NLS-3$
153 String begin = result == T_String ? "\t\tif (! " : "\t\tif ( "; //$NON-NLS-2$ //$NON-NLS-1$
154 String test = result == T_String ? ".equals(" : " != (" ; //$NON-NLS-2$ //$NON-NLS-1$
155 s += begin +decode.type(result)+"0"+test //$NON-NLS-1$
156 +decode.constant(left)+" " //$NON-NLS-1$
157 +decode.operator(operator)+" " //$NON-NLS-1$
158 +decode.constant(right)+"))\n"; //$NON-NLS-1$
159 s += "\t\t\tSystem.out.println("+ (++error) +");\n"; //$NON-NLS-1$ //$NON-NLS-2$
165 return s += "\n\t\tSystem.out.println(\"binary tables test : done\");}" ; //$NON-NLS-1$
168 public static final int[] get_AND(){
171 // (cast) left Op (cast) rigth --> result
172 // 0000 0000 0000 0000 0000
175 int[] table = new int[16*16] ;
177 // table[(T_undefined<<4)+T_undefined] = T_undefined ;
178 // table[(T_undefined<<4)+T_byte] = T_undefined ;
179 // table[(T_undefined<<4)+T_long] = T_undefined ;
180 // table[(T_undefined<<4)+T_short] = T_undefined ;
181 // table[(T_undefined<<4)+T_void] = T_undefined ;
182 // table[(T_undefined<<4)+T_String] = T_undefined ;
183 // table[(T_undefined<<4)+T_Object] = T_undefined ;
184 // table[(T_undefined<<4)+T_double] = T_undefined ;
185 // table[(T_undefined<<4)+T_float] = T_undefined ;
186 // table[(T_undefined<<4)+T_boolean] = T_undefined ;
187 // table[(T_undefined<<4)+T_char] = T_undefined ;
188 // table[(T_undefined<<4)+T_int] = T_undefined ;
189 // table[(T_undefined<<4)+T_null] = T_undefined ;
191 // table[(T_byte<<4)+T_undefined] = T_undefined ;
192 table[(T_byte<<4)+T_byte] = (Byte2Int<<12) +(Byte2Int<<4) +T_int ;
193 table[(T_byte<<4)+T_long] = (Byte2Long<<12)+(Long2Long<<4)+T_long ;
194 table[(T_byte<<4)+T_short] = (Byte2Int<<12) +(Short2Int<<4)+T_int;
195 // table[(T_byte<<4)+T_void] = T_undefined ;
196 // table[(T_byte<<4)+T_String] = T_undefined ;
197 // table[(T_byte<<4)+T_Object] = T_undefined ;
198 // table[(T_byte<<4)+T_double] = T_undefined ;
199 // table[(T_byte<<4)+T_float] = T_undefined ;
200 // table[(T_byte<<4)+T_boolean] = T_undefined ;
201 table[(T_byte<<4)+T_char] = (Byte2Int<<12) +(Char2Int<<4) +T_int ;
202 table[(T_byte<<4)+T_int] = (Byte2Int<<12) +(Int2Int<<4) +T_int ;
203 // table[(T_byte<<4)+T_null] = T_undefined ;
205 // table[(T_long<<4)+T_undefined] = T_undefined ;
206 table[(T_long<<4)+T_byte] = (Long2Long<<12)+(Byte2Long<<4)+T_long;
207 table[(T_long<<4)+T_long] = (Long2Long<<12)+(Long2Long<<4)+T_long ;
208 table[(T_long<<4)+T_short] = (Long2Long<<12)+(Short2Long<<4)+T_long; ;
209 // table[(T_long<<4)+T_void] = T_undefined ;
210 // table[(T_long<<4)+T_String] = T_undefined ;
211 // table[(T_long<<4)+T_Object] = T_undefined ;
212 // table[(T_long<<4)+T_double] = T_undefined ;
213 // table[(T_long<<4)+T_float] = T_undefined ;
214 // table[(T_long<<4)+T_boolean] = T_undefined ;
215 table[(T_long<<4)+T_char] = (Long2Long<<12)+(Char2Long<<4)+T_long ;
216 table[(T_long<<4)+T_int] = (Long2Long<<12)+(Int2Long<<4)+T_long ;
217 // table[(T_long<<4)+T_null] = T_undefined ;
219 // table[(T_short<<4)+T_undefined] = T_undefined ;
220 table[(T_short<<4)+T_byte] = (Short2Int<<12)+(Byte2Int<<4)+T_int ;
221 table[(T_short<<4)+T_long] = (Short2Long<<12)+(Long2Long<<4)+T_long ;
222 table[(T_short<<4)+T_short] = (Short2Int<<12)+(Short2Int<<4)+T_int ;
223 // table[(T_short<<4)+T_void] = T_undefined ;
224 // table[(T_short<<4)+T_String] = T_undefined ;
225 // table[(T_short<<4)+T_Object] = T_undefined ;
226 // table[(T_short<<4)+T_double] = T_undefined ;
227 // table[(T_short<<4)+T_float] = T_undefined ;
228 // table[(T_short<<4)+T_boolean] = T_undefined ;
229 table[(T_short<<4)+T_char] = (Short2Int<<12)+(Char2Int<<4)+T_int ;
230 table[(T_short<<4)+T_int] = (Short2Int<<12)+(Int2Int<<4)+T_int ;
231 // table[(T_short<<4)+T_null] = T_undefined ;
233 // table[(T_void<<4)+T_undefined] = T_undefined ;
234 // table[(T_void<<4)+T_byte] = T_undefined ;
235 // table[(T_void<<4)+T_long] = T_undefined ;
236 // table[(T_void<<4)+T_short] = T_undefined ;
237 // table[(T_void<<4)+T_void] = T_undefined ;
238 // table[(T_void<<4)+T_String] = T_undefined ;
239 // table[(T_void<<4)+T_Object] = T_undefined ;
240 // table[(T_void<<4)+T_double] = T_undefined ;
241 // table[(T_void<<4)+T_float] = T_undefined ;
242 // table[(T_void<<4)+T_boolean] = T_undefined ;
243 // table[(T_void<<4)+T_char] = T_undefined ;
244 // table[(T_void<<4)+T_int] = T_undefined ;
245 // table[(T_void<<4)+T_null] = T_undefined ;
247 // table[(T_String<<4)+T_undefined] = T_undefined ;
248 // table[(T_String<<4)+T_byte] = T_undefined ;
249 // table[(T_String<<4)+T_long] = T_undefined ;
250 // table[(T_String<<4)+T_short] = T_undefined ;
251 // table[(T_String<<4)+T_void] = T_undefined ;
252 // table[(T_String<<4)+T_String] = T_undefined ;
253 // table[(T_String<<4)+T_Object] = T_undefined ;
254 // table[(T_String<<4)+T_double] = T_undefined ;
255 // table[(T_String<<4)+T_float] = T_undefined ;
256 // table[(T_String<<4)+T_boolean] = T_undefined ;
257 // table[(T_String<<4)+T_char] = T_undefined ;
258 // table[(T_String<<4)+T_int] = T_undefined ;
259 // table[(T_String<<4)+T_null] = T_undefined ;
261 // table[(T_Object<<4)+T_undefined] = T_undefined ;
262 // table[(T_Object<<4)+T_byte] = T_undefined ;
263 // table[(T_Object<<4)+T_long] = T_undefined ;
264 // table[(T_Object<<4)+T_short] = T_undefined ;
265 // table[(T_Object<<4)+T_void] = T_undefined ;
266 // table[(T_Object<<4)+T_String] = T_undefined ;
267 // table[(T_Object<<4)+T_Object] = T_undefined ;
268 // table[(T_Object<<4)+T_double] = T_undefined ;
269 // table[(T_Object<<4)+T_float] = T_undefined ;
270 // table[(T_Object<<4)+T_boolean] = T_undefined ;
271 // table[(T_Object<<4)+T_char] = T_undefined ;
272 // table[(T_Object<<4)+T_int] = T_undefined ;
273 // table[(T_Object<<4)+T_null] = T_undefined ;
275 // table[(T_double<<4)+T_undefined] = T_undefined ;
276 // table[(T_double<<4)+T_byte] = T_undefined ;
277 // table[(T_double<<4)+T_long] = T_undefined ;
278 // table[(T_double<<4)+T_short] = T_undefined ;
279 // table[(T_double<<4)+T_void] = T_undefined ;
280 // table[(T_double<<4)+T_String] = T_undefined ;
281 // table[(T_double<<4)+T_Object] = T_undefined ;
282 // table[(T_double<<4)+T_double] = T_undefined ;
283 // table[(T_double<<4)+T_float] = T_undefined ;
284 // table[(T_double<<4)+T_boolean] = T_undefined ;
285 // table[(T_double<<4)+T_char] = T_undefined ;
286 // table[(T_double<<4)+T_int] = T_undefined;
287 // table[(T_double<<4)+T_null] = T_undefined ;
289 // table[(T_float<<4)+T_undefined] = T_undefined ;
290 // table[(T_float<<4)+T_byte] = T_undefined ;
291 // table[(T_float<<4)+T_long] = T_undefined ;
292 // table[(T_float<<4)+T_short] = T_undefined ;
293 // table[(T_float<<4)+T_void] = T_undefined ;
294 // table[(T_float<<4)+T_String] = T_undefined ;
295 // table[(T_float<<4)+T_Object] = T_undefined ;
296 // table[(T_float<<4)+T_double] = T_undefined ;
297 // table[(T_float<<4)+T_float] = T_undefined ;
298 // table[(T_float<<4)+T_boolean] = T_undefined ;
299 // table[(T_float<<4)+T_char] = T_undefined ;
300 // table[(T_float<<4)+T_int] = T_undefined ;
301 // table[(T_float<<4)+T_null] = T_undefined ;
303 // table[(T_boolean<<4)+T_undefined] = T_undefined ;
304 // table[(T_boolean<<4)+T_byte] = T_undefined ;
305 // table[(T_boolean<<4)+T_long] = T_undefined ;
306 // table[(T_boolean<<4)+T_short] = T_undefined ;
307 // table[(T_boolean<<4)+T_void] = T_undefined ;
308 // table[(T_boolean<<4)+T_String] = T_undefined ;
309 // table[(T_boolean<<4)+T_Object] = T_undefined ;
310 // table[(T_boolean<<4)+T_double] = T_undefined ;
311 // table[(T_boolean<<4)+T_float] = T_undefined ;
312 table[(T_boolean<<4)+T_boolean] = (Boolean2Boolean << 12)+(Boolean2Boolean << 4)+T_boolean ;
313 // table[(T_boolean<<4)+T_char] = T_undefined ;
314 // table[(T_boolean<<4)+T_int] = T_undefined ;
315 // table[(T_boolean<<4)+T_null] = T_undefined ;
317 // table[(T_char<<4)+T_undefined] = T_undefined ;
318 table[(T_char<<4)+T_byte] = (Char2Int<<12)+(Byte2Int<<4)+T_int ;
319 table[(T_char<<4)+T_long] = (Char2Long<<12)+(Long2Long<<4)+T_long;
320 table[(T_char<<4)+T_short] = (Char2Int<<12)+(Short2Int<<4)+T_int ;
321 // table[(T_char<<4)+T_void] = T_undefined ;
322 // table[(T_char<<4)+T_String] = T_undefined ;
323 // table[(T_char<<4)+T_Object] = T_undefined ;
324 // table[(T_char<<4)+T_double] = T_undefined ;
325 // table[(T_char<<4)+T_float] = T_undefined ;
326 // table[(T_char<<4)+T_boolean] = T_undefined ;
327 table[(T_char<<4)+T_char] = (Char2Int<<12)+(Char2Int<<4)+T_int ;
328 table[(T_char<<4)+T_int] = (Char2Int<<12)+(Int2Int<<4)+T_int ;
329 // table[(T_char<<4)+T_null] = T_undefined ;
331 // table[(T_int<<4)+T_undefined] = T_undefined ;
332 table[(T_int<<4)+T_byte] = (Int2Int<<12)+(Byte2Int<<4)+T_int ;
333 table[(T_int<<4)+T_long] = (Int2Long<<12)+(Long2Long<<4)+T_long ;
334 table[(T_int<<4)+T_short] = (Int2Int<<12)+(Short2Int<<4)+T_int ;
335 // table[(T_int<<4)+T_void] = T_undefined ;
336 // table[(T_int<<4)+T_String] = T_undefined ;
337 // table[(T_int<<4)+T_Object] = T_undefined ;
338 // table[(T_int<<4)+T_double] = T_undefined ;
339 // table[(T_int<<4)+T_float] = T_undefined ;
340 // table[(T_int<<4)+T_boolean] = T_undefined ;
341 table[(T_int<<4)+T_char] = (Int2Int<<12)+(Char2Int<<4)+T_int ;
342 table[(T_int<<4)+T_int] = (Int2Int<<12)+(Int2Int<<4)+T_int ;
343 // table[(T_int<<4)+T_null] = T_undefined ;
345 // table[(T_null<<4)+T_undefined] = T_undefined ;
346 // table[(T_null<<4)+T_byte] = T_undefined ;
347 // table[(T_null<<4)+T_long] = T_undefined ;
348 // table[(T_null<<4)+T_short] = T_undefined ;
349 // table[(T_null<<4)+T_void] = T_undefined ;
350 // table[(T_null<<4)+T_String] = T_undefined ;
351 // table[(T_null<<4)+T_Object] = T_undefined ;
352 // table[(T_null<<4)+T_double] = T_undefined ;
353 // table[(T_null<<4)+T_float] = T_undefined ;
354 // table[(T_null<<4)+T_boolean] = T_undefined ;
355 // table[(T_null<<4)+T_char] = T_undefined ;
356 // table[(T_null<<4)+T_int] = T_undefined ;
357 // table[(T_null<<4)+T_null] = T_undefined ;
362 public static final int[] get_AND_AND(){
365 // (cast) left Op (cast) rigth --> result
366 // 0000 0000 0000 0000 0000
369 int[] table = new int[16*16] ;
371 // table[(T_undefined<<4)+T_undefined] = T_undefined ;
372 // table[(T_undefined<<4)+T_byte] = T_undefined ;
373 // table[(T_undefined<<4)+T_long] = T_undefined ;
374 // table[(T_undefined<<4)+T_short] = T_undefined ;
375 // table[(T_undefined<<4)+T_void] = T_undefined ;
376 // table[(T_undefined<<4)+T_String] = T_undefined ;
377 // table[(T_undefined<<4)+T_Object] = T_undefined ;
378 // table[(T_undefined<<4)+T_double] = T_undefined ;
379 // table[(T_undefined<<4)+T_float] = T_undefined ;
380 // table[(T_undefined<<4)+T_boolean] = T_undefined ;
381 // table[(T_undefined<<4)+T_char] = T_undefined ;
382 // table[(T_undefined<<4)+T_int] = T_undefined ;
383 // table[(T_undefined<<4)+T_null] = T_undefined ;
385 // table[(T_byte<<4)+T_undefined] = T_undefined ;
386 // table[(T_byte<<4)+T_byte] = T_undefined ;
387 // table[(T_byte<<4)+T_long] = T_undefined ;
388 // table[(T_byte<<4)+T_short] = T_undefined ;
389 // table[(T_byte<<4)+T_void] = T_undefined ;
390 // table[(T_byte<<4)+T_String] = T_undefined ;
391 // table[(T_byte<<4)+T_Object] = T_undefined ;
392 // table[(T_byte<<4)+T_double] = T_undefined ;
393 // table[(T_byte<<4)+T_float] = T_undefined ;
394 // table[(T_byte<<4)+T_boolean] = T_undefined ;
395 // table[(T_byte<<4)+T_char] = T_undefined ;
396 // table[(T_byte<<4)+T_int] = T_undefined ;
397 // table[(T_byte<<4)+T_null] = T_undefined ;
399 // table[(T_long<<4)+T_undefined] = T_undefined ;
400 // table[(T_long<<4)+T_byte] = T_undefined;
401 // table[(T_long<<4)+T_long] = T_undefined ;
402 // table[(T_long<<4)+T_short] = T_undefined ;
403 // table[(T_long<<4)+T_void] = T_undefined ;
404 // table[(T_long<<4)+T_String] = T_undefined ;
405 // table[(T_long<<4)+T_Object] = T_undefined ;
406 // table[(T_long<<4)+T_double] = T_undefined ;
407 // table[(T_long<<4)+T_float] = T_undefined ;
408 // table[(T_long<<4)+T_boolean] = T_undefined ;
409 // table[(T_long<<4)+T_char] = T_undefined ;
410 // table[(T_long<<4)+T_int] = T_undefined ;
411 // table[(T_long<<4)+T_null] = T_undefined ;
413 // table[(T_short<<4)+T_undefined] = T_undefined ;
414 // table[(T_short<<4)+T_byte] = T_undefined ;
415 // table[(T_short<<4)+T_long] = T_undefined ;
416 // table[(T_short<<4)+T_short] = T_undefined ;
417 // table[(T_short<<4)+T_void] = T_undefined ;
418 // table[(T_short<<4)+T_String] = T_undefined ;
419 // table[(T_short<<4)+T_Object] = T_undefined ;
420 // table[(T_short<<4)+T_double] = T_undefined ;
421 // table[(T_short<<4)+T_float] = T_undefined ;
422 // table[(T_short<<4)+T_boolean] = T_undefined ;
423 // table[(T_short<<4)+T_char] = T_undefined ;
424 // table[(T_short<<4)+T_int] = T_undefined ;
425 // table[(T_short<<4)+T_null] = T_undefined ;
427 // table[(T_void<<4)+T_undefined] = T_undefined ;
428 // table[(T_void<<4)+T_byte] = T_undefined ;
429 // table[(T_void<<4)+T_long] = T_undefined ;
430 // table[(T_void<<4)+T_short] = T_undefined ;
431 // table[(T_void<<4)+T_void] = T_undefined ;
432 // table[(T_void<<4)+T_String] = T_undefined ;
433 // table[(T_void<<4)+T_Object] = T_undefined ;
434 // table[(T_void<<4)+T_double] = T_undefined ;
435 // table[(T_void<<4)+T_float] = T_undefined ;
436 // table[(T_void<<4)+T_boolean] = T_undefined ;
437 // table[(T_void<<4)+T_char] = T_undefined ;
438 // table[(T_void<<4)+T_int] = T_undefined ;
439 // table[(T_void<<4)+T_null] = T_undefined ;
441 // table[(T_String<<4)+T_undefined] = T_undefined ;
442 // table[(T_String<<4)+T_byte] = T_undefined ;
443 // table[(T_String<<4)+T_long] = T_undefined ;
444 // table[(T_String<<4)+T_short] = T_undefined ;
445 // table[(T_String<<4)+T_void] = T_undefined ;
446 // table[(T_String<<4)+T_String] = T_undefined ;
447 // table[(T_String<<4)+T_Object] = T_undefined ;
448 // table[(T_String<<4)+T_double] = T_undefined ;
449 // table[(T_String<<4)+T_float] = T_undefined ;
450 // table[(T_String<<4)+T_boolean] = T_undefined ;
451 // table[(T_String<<4)+T_char] = T_undefined ;
452 // table[(T_String<<4)+T_int] = T_undefined ;
453 // table[(T_String<<4)+T_null] = T_undefined ;
455 // table[(T_Object<<4)+T_undefined] = T_undefined ;
456 // table[(T_Object<<4)+T_byte] = T_undefined ;
457 // table[(T_Object<<4)+T_long] = T_undefined ;
458 // table[(T_Object<<4)+T_short] = T_undefined ;
459 // table[(T_Object<<4)+T_void] = T_undefined ;
460 // table[(T_Object<<4)+T_String] = T_undefined ;
461 // table[(T_Object<<4)+T_Object] = T_undefined ;
462 // table[(T_Object<<4)+T_double] = T_undefined ;
463 // table[(T_Object<<4)+T_float] = T_undefined ;
464 // table[(T_Object<<4)+T_boolean] = T_undefined ;
465 // table[(T_Object<<4)+T_char] = T_undefined ;
466 // table[(T_Object<<4)+T_int] = T_undefined ;
467 // table[(T_Object<<4)+T_null] = T_undefined ;
469 // table[(T_double<<4)+T_undefined] = T_undefined ;
470 // table[(T_double<<4)+T_byte] = T_undefined ;
471 // table[(T_double<<4)+T_long] = T_undefined ;
472 // table[(T_double<<4)+T_short] = T_undefined ;
473 // table[(T_double<<4)+T_void] = T_undefined ;
474 // table[(T_double<<4)+T_String] = T_undefined ;
475 // table[(T_double<<4)+T_Object] = T_undefined ;
476 // table[(T_double<<4)+T_double] = T_undefined ;
477 // table[(T_double<<4)+T_float] = T_undefined ;
478 // table[(T_double<<4)+T_boolean] = T_undefined ;
479 // table[(T_double<<4)+T_char] = T_undefined ;
480 // table[(T_double<<4)+T_int] = T_undefined;
481 // table[(T_double<<4)+T_null] = T_undefined ;
483 // table[(T_float<<4)+T_undefined] = T_undefined ;
484 // table[(T_float<<4)+T_byte] = T_undefined ;
485 // table[(T_float<<4)+T_long] = T_undefined ;
486 // table[(T_float<<4)+T_short] = T_undefined ;
487 // table[(T_float<<4)+T_void] = T_undefined ;
488 // table[(T_float<<4)+T_String] = T_undefined ;
489 // table[(T_float<<4)+T_Object] = T_undefined ;
490 // table[(T_float<<4)+T_double] = T_undefined ;
491 // table[(T_float<<4)+T_float] = T_undefined ;
492 // table[(T_float<<4)+T_boolean] = T_undefined ;
493 // table[(T_float<<4)+T_char] = T_undefined ;
494 // table[(T_float<<4)+T_int] = T_undefined ;
495 // table[(T_float<<4)+T_null] = T_undefined ;
497 // table[(T_boolean<<4)+T_undefined] = T_undefined ;
498 // table[(T_boolean<<4)+T_byte] = T_undefined ;
499 // table[(T_boolean<<4)+T_long] = T_undefined ;
500 // table[(T_boolean<<4)+T_short] = T_undefined ;
501 // table[(T_boolean<<4)+T_void] = T_undefined ;
502 // table[(T_boolean<<4)+T_String] = T_undefined ;
503 // table[(T_boolean<<4)+T_Object] = T_undefined ;
504 // table[(T_boolean<<4)+T_double] = T_undefined ;
505 // table[(T_boolean<<4)+T_float] = T_undefined ;
506 table[(T_boolean<<4)+T_boolean] = (Boolean2Boolean<<12)+(Boolean2Boolean<<4)+T_boolean ;
507 // table[(T_boolean<<4)+T_char] = T_undefined ;
508 // table[(T_boolean<<4)+T_int] = T_undefined ;
509 // table[(T_boolean<<4)+T_null] = T_undefined ;
511 // table[(T_char<<4)+T_undefined] = T_undefined ;
512 // table[(T_char<<4)+T_byte] = T_undefined ;
513 // table[(T_char<<4)+T_long] = T_undefined;
514 // table[(T_char<<4)+T_short] = T_undefined ;
515 // table[(T_char<<4)+T_void] = T_undefined ;
516 // table[(T_char<<4)+T_String] = T_undefined ;
517 // table[(T_char<<4)+T_Object] = T_undefined ;
518 // table[(T_char<<4)+T_double] = T_undefined ;
519 // table[(T_char<<4)+T_float] = T_undefined ;
520 // table[(T_char<<4)+T_boolean] = T_undefined ;
521 // table[(T_char<<4)+T_char] = T_undefined ;
522 // table[(T_char<<4)+T_int] = T_undefined ;
523 // table[(T_char<<4)+T_null] = T_undefined ;
525 // table[(T_int<<4)+T_undefined] = T_undefined ;
526 // table[(T_int<<4)+T_byte] = T_undefined ;
527 // table[(T_int<<4)+T_long] = T_undefined ;
528 // table[(T_int<<4)+T_short] = T_undefined ;
529 // table[(T_int<<4)+T_void] = T_undefined ;
530 // table[(T_int<<4)+T_String] = T_undefined ;
531 // table[(T_int<<4)+T_Object] = T_undefined ;
532 // table[(T_int<<4)+T_double] = T_undefined ;
533 // table[(T_int<<4)+T_float] = T_undefined ;
534 // table[(T_int<<4)+T_boolean] = T_undefined ;
535 // table[(T_int<<4)+T_char] = T_undefined ;
536 // table[(T_int<<4)+T_int] = T_undefined ;
537 // table[(T_int<<4)+T_null] = T_undefined ;
539 // table[(T_null<<4)+T_undefined] = T_undefined ;
540 // table[(T_null<<4)+T_byte] = T_undefined ;
541 // table[(T_null<<4)+T_long] = T_undefined ;
542 // table[(T_null<<4)+T_short] = T_undefined ;
543 // table[(T_null<<4)+T_void] = T_undefined ;
544 // table[(T_null<<4)+T_String] = T_undefined ;
545 // table[(T_null<<4)+T_Object] = T_undefined ;
546 // table[(T_null<<4)+T_double] = T_undefined ;
547 // table[(T_null<<4)+T_float] = T_undefined ;
548 // table[(T_null<<4)+T_boolean] = T_undefined ;
549 // table[(T_null<<4)+T_char] = T_undefined ;
550 // table[(T_null<<4)+T_int] = T_undefined ;
551 // table[(T_null<<4)+T_null] = T_undefined ;
555 public static final int[] get_DIVIDE(){
558 // (cast) left Op (cast) rigth --> result
559 // 0000 0000 0000 0000 0000
563 // int[] table = new int[16*16] ;
568 public static final int[] get_EQUAL_EQUAL(){
571 // (cast) left Op (cast) rigth --> result
572 // 0000 0000 0000 0000 0000
575 int[] table = new int[16*16] ;
577 // table[(T_undefined<<4)+T_undefined] = T_undefined ;
578 // table[(T_undefined<<4)+T_byte] = T_undefined ;
579 // table[(T_undefined<<4)+T_long] = T_undefined ;
580 // table[(T_undefined<<4)+T_short] = T_undefined ;
581 // table[(T_undefined<<4)+T_void] = T_undefined ;
582 // table[(T_undefined<<4)+T_String] = T_undefined ;
583 // table[(T_undefined<<4)+T_Object] = T_undefined ;
584 // table[(T_undefined<<4)+T_double] = T_undefined ;
585 // table[(T_undefined<<4)+T_float] = T_undefined ;
586 // table[(T_undefined<<4)+T_boolean] = T_undefined ;
587 // table[(T_undefined<<4)+T_char] = T_undefined ;
588 // table[(T_undefined<<4)+T_int] = T_undefined ;
589 // table[(T_undefined<<4)+T_null] = T_undefined ;
591 // table[(T_byte<<4)+T_undefined] = T_undefined ;
592 table[(T_byte<<4)+T_byte] = (Byte2Int<<12)+(Byte2Int<<4)+T_boolean ;
593 table[(T_byte<<4)+T_long] = (Byte2Long<<12)+(Long2Long<<4)+T_boolean ;
594 table[(T_byte<<4)+T_short] = (Byte2Int<<12)+(Short2Int<<4)+T_boolean ;
595 // table[(T_byte<<4)+T_void] = T_undefined ;
596 // table[(T_byte<<4)+T_String] = T_undefined ;
597 // table[(T_byte<<4)+T_Object] = T_undefined ;
598 table[(T_byte<<4)+T_double] = (Byte2Double<<12)+(Double2Double<<4)+T_boolean ;
599 table[(T_byte<<4)+T_float] = (Byte2Float<<12)+(Float2Float<<4)+T_boolean;
600 // table[(T_byte<<4)+T_boolean] = T_undefined ;
601 table[(T_byte<<4)+T_char] = (Byte2Int<<12)+(Char2Int<<4)+T_boolean ;
602 table[(T_byte<<4)+T_int] = (Byte2Int<<12)+(Int2Int<<4)+T_boolean;
603 // table[(T_byte<<4)+T_null] = T_undefined ;
605 // table[(T_long<<4)+T_undefined] = T_undefined ;
606 table[(T_long<<4)+T_byte] = (Long2Long<<12)+(Byte2Long<<4)+T_boolean;
607 table[(T_long<<4)+T_long] = (Long2Long<<12)+(Long2Long<<4)+T_boolean ;
608 table[(T_long<<4)+T_short] = (Long2Long<<12)+(Short2Long<<4)+T_boolean ;
609 // table[(T_long<<4)+T_void] = T_undefined ;
610 // table[(T_long<<4)+T_String] = T_undefined ;
611 // table[(T_long<<4)+T_Object] = T_undefined ;
612 table[(T_long<<4)+T_double] = (Long2Double<<12)+(Double2Double<<4)+T_boolean ;
613 table[(T_long<<4)+T_float] = (Long2Float<<12)+(Float2Float<<4)+T_boolean ;
614 // table[(T_long<<4)+T_boolean] = T_undefined ;
615 table[(T_long<<4)+T_char] = (Long2Long<<12)+(Char2Long<<4)+T_boolean ;
616 table[(T_long<<4)+T_int] = (Long2Long<<12)+(Int2Long<<4)+T_boolean ;
617 // table[(T_long<<4)+T_null] = T_undefined ;
619 // table[(T_short<<4)+T_undefined] = T_undefined ;
620 table[(T_short<<4)+T_byte] = (Short2Int<<12)+(Byte2Int<<4)+T_boolean ;
621 table[(T_short<<4)+T_long] = (Short2Long<<12)+(Long2Long<<4)+T_boolean ;
622 table[(T_short<<4)+T_short] = (Short2Int<<12)+(Short2Int<<4)+T_boolean ;
623 // table[(T_short<<4)+T_void] = T_undefined ;
624 // table[(T_short<<4)+T_String] = T_undefined ;
625 // table[(T_short<<4)+T_Object] = T_undefined ;
626 table[(T_short<<4)+T_double] = (Short2Double<<12)+(Double2Double<<4)+T_boolean ;
627 table[(T_short<<4)+T_float] = (Short2Float<<12)+(Float2Float<<4)+T_boolean ;
628 // table[(T_short<<4)+T_boolean] = T_undefined ;
629 table[(T_short<<4)+T_char] = (Short2Int<<12)+(Char2Int<<4)+T_boolean ;
630 table[(T_short<<4)+T_int] = (Short2Int<<12)+(Int2Int<<4)+T_boolean ;
631 // table[(T_short<<4)+T_null] = T_undefined ;
633 // table[(T_void<<4)+T_undefined] = T_undefined ;
634 // table[(T_void<<4)+T_byte] = T_undefined ;
635 // table[(T_void<<4)+T_long] = T_undefined ;
636 // table[(T_void<<4)+T_short] = T_undefined ;
637 // table[(T_void<<4)+T_void] = T_undefined ;
638 // table[(T_void<<4)+T_String] = T_undefined ;
639 // table[(T_void<<4)+T_Object] = T_undefined ;
640 // table[(T_void<<4)+T_double] = T_undefined ;
641 // table[(T_void<<4)+T_float] = T_undefined ;
642 // table[(T_void<<4)+T_boolean] = T_undefined ;
643 // table[(T_void<<4)+T_char] = T_undefined ;
644 // table[(T_void<<4)+T_int] = T_undefined ;
645 // table[(T_void<<4)+T_null] = T_undefined ;
647 // table[(T_String<<4)+T_undefined] = T_undefined ;
648 // table[(T_String<<4)+T_byte] = T_undefined ;
649 // table[(T_String<<4)+T_long] = T_undefined ;
650 // table[(T_String<<4)+T_short] = T_undefined ;
651 // table[(T_String<<4)+T_void] = T_undefined ;
652 table[(T_String<<4)+T_String] = /*String2Object String2Object*/
653 (T_Object<<16)+(T_String<<12)+(T_Object<<8)+(T_String<<4)+T_boolean ;
654 table[(T_String<<4)+T_Object] = /*String2Object Object2Object*/
655 (T_Object<<16)+(T_String<<12)+(T_Object<<8)+(T_Object<<4)+T_boolean ;
656 // table[(T_String<<4)+T_double] = T_undefined ;
657 // table[(T_String<<4)+T_float] = T_undefined ;
658 // table[(T_String<<4)+T_boolean] = T_undefined ;
659 // table[(T_String<<4)+T_char] = T_undefined ;
660 // table[(T_String<<4)+T_int] = T_undefined ;
661 table[(T_String<<4)+T_null] = /*Object2String null2Object */
662 (T_Object<<16)+(T_String<<12)+(T_Object<<8)+(T_null<<4)+T_boolean ;
664 // table[(T_Object<<4)+T_undefined] = T_undefined ;
665 // table[(T_Object<<4)+T_byte] = T_undefined ;
666 // table[(T_Object<<4)+T_long] = T_undefined ;
667 // table[(T_Object<<4)+T_short] = T_undefined ;
668 // table[(T_Object<<4)+T_void] = T_undefined ;
669 table[(T_Object<<4)+T_String] = /*Object2Object String2Object*/
670 (T_Object<<16)+(T_Object<<12)+(T_Object<<8)+(T_String<<4)+T_boolean ;
671 table[(T_Object<<4)+T_Object] = /*Object2Object Object2Object*/
672 (T_Object<<16)+(T_Object<<12)+(T_Object<<8)+(T_Object<<4)+T_boolean ;
673 // table[(T_Object<<4)+T_double] = T_undefined ;
674 // table[(T_Object<<4)+T_float] = T_undefined ;
675 // table[(T_Object<<4)+T_boolean] = T_undefined ;
676 // table[(T_Object<<4)+T_char] = T_undefined ;
677 // table[(T_Object<<4)+T_int] = T_undefined ;
678 table[(T_Object<<4)+T_null] = /*Object2Object null2Object*/
679 (T_Object<<16)+(T_Object<<12)+(T_Object<<8)+(T_null<<4)+T_boolean ;
681 // table[(T_double<<4)+T_undefined] = T_undefined ;
682 table[(T_double<<4)+T_byte] = (Double2Double<<12)+(Byte2Double<<4)+T_boolean ;
683 table[(T_double<<4)+T_long] = (Double2Double<<12)+(Long2Double<<4)+T_boolean ;
684 table[(T_double<<4)+T_short] = (Double2Double<<12)+(Short2Double<<4)+T_boolean ;
685 // table[(T_double<<4)+T_void] = T_undefined ;
686 // table[(T_double<<4)+T_String] = T_undefined ;
687 // table[(T_double<<4)+T_Object] = T_undefined ;
688 table[(T_double<<4)+T_double] = (Double2Double<<12)+(Double2Double<<4)+T_boolean ;
689 table[(T_double<<4)+T_float] = (Double2Double<<12)+(Float2Double<<4)+T_boolean;
690 // table[(T_double<<4)+T_boolean] = T_undefined ;
691 table[(T_double<<4)+T_char] = (Double2Double<<12)+(Char2Double<<4)+T_boolean ;
692 table[(T_double<<4)+T_int] = (Double2Double<<12)+(Int2Double<<4)+T_boolean ;
693 // table[(T_double<<4)+T_null] = T_undefined ;
695 // table[(T_float<<4)+T_undefined] = T_undefined ;
696 table[(T_float<<4)+T_byte] = (Float2Float<<12)+(Byte2Float<<4)+T_boolean ;
697 table[(T_float<<4)+T_long] = (Float2Float<<12)+(Long2Float<<4)+T_boolean ;
698 table[(T_float<<4)+T_short] = (Float2Float<<12)+(Short2Float<<4)+T_boolean ;
699 // table[(T_float<<4)+T_void] = T_undefined ;
700 // table[(T_float<<4)+T_String] = T_undefined ;
701 // table[(T_float<<4)+T_Object] = T_undefined ;
702 table[(T_float<<4)+T_double] = (Float2Double<<12)+(Double2Double<<4)+T_boolean ;
703 table[(T_float<<4)+T_float] = (Float2Float<<12)+(Float2Float<<4)+T_boolean ;
704 // table[(T_float<<4)+T_boolean] = T_undefined ;
705 table[(T_float<<4)+T_char] = (Float2Float<<12)+(Char2Float<<4)+T_boolean ;
706 table[(T_float<<4)+T_int] = (Float2Float<<12)+(Int2Float<<4)+T_boolean ;
707 // table[(T_float<<4)+T_null] = T_undefined ;
709 // table[(T_boolean<<4)+T_undefined] = T_undefined ;
710 // table[(T_boolean<<4)+T_byte] = T_undefined ;
711 // table[(T_boolean<<4)+T_long] = T_undefined ;
712 // table[(T_boolean<<4)+T_short] = T_undefined ;
713 // table[(T_boolean<<4)+T_void] = T_undefined ;
714 // table[(T_boolean<<4)+T_String] = T_undefined ;
715 // table[(T_boolean<<4)+T_Object] = T_undefined ;
716 // table[(T_boolean<<4)+T_double] = T_undefined ;
717 // table[(T_boolean<<4)+T_float] = T_undefined ;
718 table[(T_boolean<<4)+T_boolean] = (Boolean2Boolean<<12)+(Boolean2Boolean<<4)+T_boolean ;
719 // table[(T_boolean<<4)+T_char] = T_undefined ;
720 // table[(T_boolean<<4)+T_int] = T_undefined ;
721 // table[(T_boolean<<4)+T_null] = T_undefined ;
723 // table[(T_char<<4)+T_undefined] = T_undefined ;
724 table[(T_char<<4)+T_byte] = (Char2Int<<12)+(Byte2Int<<4)+T_boolean ;
725 table[(T_char<<4)+T_long] = (Char2Long<<12)+(Long2Long<<4)+T_boolean ;
726 table[(T_char<<4)+T_short] = (Char2Int<<12)+(Short2Int<<4)+T_boolean ;
727 // table[(T_char<<4)+T_void] = T_undefined ;
728 // table[(T_char<<4)+T_String] = T_undefined ;
729 // table[(T_char<<4)+T_Object] = T_undefined ;
730 table[(T_char<<4)+T_double] = (Char2Double<<12)+(Double2Double<<4)+T_boolean ;
731 table[(T_char<<4)+T_float] = (Char2Float<<12)+(Float2Float<<4)+T_boolean ;
732 // table[(T_char<<4)+T_boolean] = T_undefined ;
733 table[(T_char<<4)+T_char] = (Char2Int<<12)+(Char2Int<<4)+T_boolean ;
734 table[(T_char<<4)+T_int] = (Char2Int<<12)+(Int2Int<<4)+T_boolean ;
735 // table[(T_char<<4)+T_null] = T_undefined ;
737 // table[(T_int<<4)+T_undefined] = T_undefined ;
738 table[(T_int<<4)+T_byte] = (Int2Int<<12)+(Byte2Int<<4)+T_boolean ;
739 table[(T_int<<4)+T_long] = (Int2Long<<12)+(Long2Long<<4)+T_boolean ;
740 table[(T_int<<4)+T_short] = (Int2Int<<12)+(Short2Int<<4)+T_boolean ;
741 // table[(T_int<<4)+T_void] = T_undefined ;
742 // table[(T_int<<4)+T_String] = T_undefined ;
743 // table[(T_int<<4)+T_Object] = T_undefined ;
744 table[(T_int<<4)+T_double] = (Int2Double<<12)+(Double2Double<<4)+T_boolean ;
745 table[(T_int<<4)+T_float] = (Int2Float<<12)+(Float2Float<<4)+T_boolean;
746 // table[(T_int<<4)+T_boolean] = T_undefined ;
747 table[(T_int<<4)+T_char] = (Int2Int<<12)+(Char2Int<<4)+T_boolean ;
748 table[(T_int<<4)+T_int] = (Int2Int<<12)+(Int2Int<<4)+T_boolean ;
749 // table[(T_int<<4)+T_null] = T_undefined ;
751 // table[(T_null<<4)+T_undefined] = T_undefined ;
752 // table[(T_null<<4)+T_byte] = T_undefined ;
753 // table[(T_null<<4)+T_long] = T_undefined ;
754 // table[(T_null<<4)+T_short] = T_undefined ;
755 // table[(T_null<<4)+T_void] = T_undefined ;
756 table[(T_null<<4)+T_String] = /*null2Object String2Object*/
757 (T_Object<<16)+(T_null<<12)+(T_Object<<8)+(T_String<<4)+T_boolean ;
758 table[(T_null<<4)+T_Object] = /*null2Object Object2Object*/
759 (T_Object<<16)+(T_null<<12)+(T_Object<<8)+(T_Object<<4)+T_boolean ; ;
760 // table[(T_null<<4)+T_double] = T_undefined ;
761 // table[(T_null<<4)+T_float] = T_undefined ;
762 // table[(T_null<<4)+T_boolean] = T_undefined ;
763 // table[(T_null<<4)+T_char] = T_undefined ;
764 // table[(T_null<<4)+T_int] = T_undefined ;
765 table[(T_null<<4)+T_null] = /*null2Object null2Object*/
766 (T_Object<<16)+(T_null<<12)+(T_Object<<8)+(T_null<<4)+T_boolean ;
770 public static final int[] get_GREATER(){
773 // (cast) left Op (cast) rigth --> result
774 // 0000 0000 0000 0000 0000
777 // int[] table = new int[16*16] ;
781 public static final int[] get_GREATER_EQUAL(){
784 // (cast) left Op (cast) rigth --> result
785 // 0000 0000 0000 0000 0000
788 // int[] table = new int[16*16] ;
792 public static final int[] get_LEFT_SHIFT(){
795 // (cast) left Op (cast) rigth --> result
796 // 0000 0000 0000 0000 0000
799 int[] table = new int[16*16] ;
801 // table[(T_undefined<<4)+T_undefined] = T_undefined ;
802 // table[(T_undefined<<4)+T_byte] = T_undefined ;
803 // table[(T_undefined<<4)+T_long] = T_undefined ;
804 // table[(T_undefined<<4)+T_short] = T_undefined ;
805 // table[(T_undefined<<4)+T_void] = T_undefined ;
806 // table[(T_undefined<<4)+T_String] = T_undefined ;
807 // table[(T_undefined<<4)+T_Object] = T_undefined ;
808 // table[(T_undefined<<4)+T_double] = T_undefined ;
809 // table[(T_undefined<<4)+T_float] = T_undefined ;
810 // table[(T_undefined<<4)+T_boolean] = T_undefined ;
811 // table[(T_undefined<<4)+T_char] = T_undefined ;
812 // table[(T_undefined<<4)+T_int] = T_undefined ;
813 // table[(T_undefined<<4)+T_null] = T_undefined ;
815 // table[(T_byte<<4)+T_undefined] = T_undefined ;
816 table[(T_byte<<4)+T_byte] = (Byte2Int<<12)+(Byte2Int<<4)+T_int ;
817 table[(T_byte<<4)+T_long] = (Byte2Int<<12)+(Long2Int<<4)+T_int ;
818 table[(T_byte<<4)+T_short] = (Byte2Int<<12)+(Short2Int<<4)+T_int ;
819 // table[(T_byte<<4)+T_void] = T_undefined ;
820 // table[(T_byte<<4)+T_String] = T_undefined ;
821 // table[(T_byte<<4)+T_Object] = T_undefined ;
822 // table[(T_byte<<4)+T_double] = T_undefined ;
823 // table[(T_byte<<4)+T_float] = T_undefined ;
824 // table[(T_byte<<4)+T_boolean] = T_undefined ;
825 table[(T_byte<<4)+T_char] = (Byte2Int<<12)+(Char2Int<<4)+T_int ;
826 table[(T_byte<<4)+T_int] = (Byte2Int<<12)+(Int2Int<<4)+T_int ;
827 // table[(T_byte<<4)+T_null] = T_undefined ;
829 // table[(T_long<<4)+T_undefined] = T_undefined ;
830 table[(T_long<<4)+T_byte] = (Long2Long<<12)+(Byte2Int<<4)+T_long;
831 table[(T_long<<4)+T_long] = (Long2Long<<12)+(Long2Int<<4)+T_long ;
832 table[(T_long<<4)+T_short] = (Long2Long<<12)+(Short2Int<<4)+T_long ;
833 // table[(T_long<<4)+T_void] = T_undefined ;
834 // table[(T_long<<4)+T_String] = T_undefined ;
835 // table[(T_long<<4)+T_Object] = T_undefined ;
836 // table[(T_long<<4)+T_double] = T_undefined ;
837 // table[(T_long<<4)+T_float] = T_undefined ;
838 // table[(T_long<<4)+T_boolean] = T_undefined ;
839 table[(T_long<<4)+T_char] = (Long2Long<<12)+(Char2Int<<4)+T_long ;
840 table[(T_long<<4)+T_int] = (Long2Long<<12)+(Int2Int<<4)+T_long ;
841 // table[(T_long<<4)+T_null] = T_undefined ;
843 // table[(T_short<<4)+T_undefined] = T_undefined ;
844 table[(T_short<<4)+T_byte] = (Short2Int<<12)+(Byte2Int<<4)+T_int ;
845 table[(T_short<<4)+T_long] = (Short2Int<<12)+(Long2Int<<4)+T_int ;
846 table[(T_short<<4)+T_short] = (Short2Int<<12)+(Short2Int<<4)+T_int ;
847 // table[(T_short<<4)+T_void] = T_undefined ;
848 // table[(T_short<<4)+T_String] = T_undefined ;
849 // table[(T_short<<4)+T_Object] = T_undefined ;
850 // table[(T_short<<4)+T_double] = T_undefined ;
851 // table[(T_short<<4)+T_float] = T_undefined ;
852 // table[(T_short<<4)+T_boolean] = T_undefined ;
853 table[(T_short<<4)+T_char] = (Short2Int<<12)+(Char2Int<<4)+T_int ;
854 table[(T_short<<4)+T_int] = (Short2Int<<12)+(Int2Int<<4)+T_int ;
855 // table[(T_short<<4)+T_null] = T_undefined ;
857 // table[(T_void<<4)+T_undefined] = T_undefined ;
858 // table[(T_void<<4)+T_byte] = T_undefined ;
859 // table[(T_void<<4)+T_long] = T_undefined ;
860 // table[(T_void<<4)+T_short] = T_undefined ;
861 // table[(T_void<<4)+T_void] = T_undefined ;
862 // table[(T_void<<4)+T_String] = T_undefined ;
863 // table[(T_void<<4)+T_Object] = T_undefined ;
864 // table[(T_void<<4)+T_double] = T_undefined ;
865 // table[(T_void<<4)+T_float] = T_undefined ;
866 // table[(T_void<<4)+T_boolean] = T_undefined ;
867 // table[(T_void<<4)+T_char] = T_undefined ;
868 // table[(T_void<<4)+T_int] = T_undefined ;
869 // table[(T_void<<4)+T_null] = T_undefined ;
871 // table[(T_String<<4)+T_undefined] = T_undefined ;
872 // table[(T_String<<4)+T_byte] = T_undefined ;
873 // table[(T_String<<4)+T_long] = T_undefined ;
874 // table[(T_String<<4)+T_short] = T_undefined ;
875 // table[(T_String<<4)+T_void] = T_undefined ;
876 // table[(T_String<<4)+T_String] = T_undefined ;
877 // table[(T_String<<4)+T_Object] = T_undefined ;
878 // table[(T_String<<4)+T_double] = T_undefined ;
879 // table[(T_String<<4)+T_float] = T_undefined ;
880 // table[(T_String<<4)+T_boolean] = T_undefined ;
881 // table[(T_String<<4)+T_char] = T_undefined ;
882 // table[(T_String<<4)+T_int] = T_undefined ;
883 // table[(T_String<<4)+T_null] = T_undefined ;
885 // table[(T_Object<<4)+T_undefined] = T_undefined ;
886 // table[(T_Object<<4)+T_byte] = T_undefined ;
887 // table[(T_Object<<4)+T_long] = T_undefined ;
888 // table[(T_Object<<4)+T_short] = T_undefined ;
889 // table[(T_Object<<4)+T_void] = T_undefined ;
890 // table[(T_Object<<4)+T_String] = T_undefined ;
891 // table[(T_Object<<4)+T_Object] = T_undefined ;
892 // table[(T_Object<<4)+T_double] = T_undefined ;
893 // table[(T_Object<<4)+T_float] = T_undefined ;
894 // table[(T_Object<<4)+T_boolean] = T_undefined ;
895 // table[(T_Object<<4)+T_char] = T_undefined ;
896 // table[(T_Object<<4)+T_int] = T_undefined ;
897 // table[(T_Object<<4)+T_null] = T_undefined ;
899 // table[(T_double<<4)+T_undefined] = T_undefined ;
900 // table[(T_double<<4)+T_byte] = T_undefined ;
901 // table[(T_double<<4)+T_long] = T_undefined ;
902 // table[(T_double<<4)+T_short] = T_undefined ;
903 // table[(T_double<<4)+T_void] = T_undefined ;
904 // table[(T_double<<4)+T_String] = T_undefined ;
905 // table[(T_double<<4)+T_Object] = T_undefined ;
906 // table[(T_double<<4)+T_double] = T_undefined ;
907 // table[(T_double<<4)+T_float] = T_undefined ;
908 // table[(T_double<<4)+T_boolean] = T_undefined ;
909 // table[(T_double<<4)+T_char] = T_undefined ;
910 // table[(T_double<<4)+T_int] = T_undefined;
911 // table[(T_double<<4)+T_null] = T_undefined ;
913 // table[(T_float<<4)+T_undefined] = T_undefined ;
914 // table[(T_float<<4)+T_byte] = T_undefined ;
915 // table[(T_float<<4)+T_long] = T_undefined ;
916 // table[(T_float<<4)+T_short] = T_undefined ;
917 // table[(T_float<<4)+T_void] = T_undefined ;
918 // table[(T_float<<4)+T_String] = T_undefined ;
919 // table[(T_float<<4)+T_Object] = T_undefined ;
920 // table[(T_float<<4)+T_double] = T_undefined ;
921 // table[(T_float<<4)+T_float] = T_undefined ;
922 // table[(T_float<<4)+T_boolean] = T_undefined ;
923 // table[(T_float<<4)+T_char] = T_undefined ;
924 // table[(T_float<<4)+T_int] = T_undefined ;
925 // table[(T_float<<4)+T_null] = T_undefined ;
927 // table[(T_boolean<<4)+T_undefined] = T_undefined ;
928 // table[(T_boolean<<4)+T_byte] = T_undefined ;
929 // table[(T_boolean<<4)+T_long] = T_undefined ;
930 // table[(T_boolean<<4)+T_short] = T_undefined ;
931 // table[(T_boolean<<4)+T_void] = T_undefined ;
932 // table[(T_boolean<<4)+T_String] = T_undefined ;
933 // table[(T_boolean<<4)+T_Object] = T_undefined ;
934 // table[(T_boolean<<4)+T_double] = T_undefined ;
935 // table[(T_boolean<<4)+T_float] = T_undefined ;
936 // table[(T_boolean<<4)+T_boolean] = T_undefined ;
937 // table[(T_boolean<<4)+T_char] = T_undefined ;
938 // table[(T_boolean<<4)+T_int] = T_undefined ;
939 // table[(T_boolean<<4)+T_null] = T_undefined ;
941 // table[(T_char<<4)+T_undefined] = T_undefined ;
942 table[(T_char<<4)+T_byte] = (Char2Int<<12)+(Byte2Int<<4)+T_int ;
943 table[(T_char<<4)+T_long] = (Char2Int<<12)+(Long2Int<<4)+T_int ;
944 table[(T_char<<4)+T_short] = (Char2Int<<12)+(Short2Int<<4)+T_int ;
945 // table[(T_char<<4)+T_void] = T_undefined ;
946 // table[(T_char<<4)+T_String] = T_undefined ;
947 // table[(T_char<<4)+T_Object] = T_undefined ;
948 // table[(T_char<<4)+T_double] = T_undefined ;
949 // table[(T_char<<4)+T_float] = T_undefined ;
950 // table[(T_char<<4)+T_boolean] = T_undefined ;
951 table[(T_char<<4)+T_char] = (Char2Int<<12)+(Char2Int<<4)+T_int ;
952 table[(T_char<<4)+T_int] = (Char2Int<<12)+(Int2Int<<4)+T_int ;
953 // table[(T_char<<4)+T_null] = T_undefined ;
955 // table[(T_int<<4)+T_undefined] = T_undefined ;
956 table[(T_int<<4)+T_byte] = (Int2Int<<12)+(Byte2Int<<4)+T_int ;
957 table[(T_int<<4)+T_long] = (Int2Int<<12)+(Long2Int<<4)+T_int ;
958 table[(T_int<<4)+T_short] = (Int2Int<<12)+(Short2Int<<4)+T_int ;
959 // table[(T_int<<4)+T_void] = T_undefined ;
960 // table[(T_int<<4)+T_String] = T_undefined ;
961 // table[(T_int<<4)+T_Object] = T_undefined ;
962 // table[(T_int<<4)+T_double] = T_undefined ;
963 // table[(T_int<<4)+T_float] = T_undefined ;
964 // table[(T_int<<4)+T_boolean] = T_undefined ;
965 table[(T_int<<4)+T_char] = (Int2Int<<12)+(Char2Int<<4)+T_int ;
966 table[(T_int<<4)+T_int] = (Int2Int<<12)+(Int2Int<<4)+T_int ;
967 // table[(T_int<<4)+T_null] = T_undefined ;
969 // table[(T_null<<4)+T_undefined] = T_undefined ;
970 // table[(T_null<<4)+T_byte] = T_undefined ;
971 // table[(T_null<<4)+T_long] = T_undefined ;
972 // table[(T_null<<4)+T_short] = T_undefined ;
973 // table[(T_null<<4)+T_void] = T_undefined ;
974 // table[(T_null<<4)+T_String] = T_undefined ;
975 // table[(T_null<<4)+T_Object] = T_undefined ;
976 // table[(T_null<<4)+T_double] = T_undefined ;
977 // table[(T_null<<4)+T_float] = T_undefined ;
978 // table[(T_null<<4)+T_boolean] = T_undefined ;
979 // table[(T_null<<4)+T_char] = T_undefined ;
980 // table[(T_null<<4)+T_int] = T_undefined ;
981 // table[(T_null<<4)+T_null] = T_undefined ;
986 public static final int[] get_LESS(){
989 // (cast) left Op (cast) rigth --> result
990 // 0000 0000 0000 0000 0000
993 int[] table = new int[16*16] ;
995 // table[(T_undefined<<4)+T_undefined] = T_undefined ;
996 // table[(T_undefined<<4)+T_byte] = T_undefined ;
997 // table[(T_undefined<<4)+T_long] = T_undefined ;
998 // table[(T_undefined<<4)+T_short] = T_undefined ;
999 // table[(T_undefined<<4)+T_void] = T_undefined ;
1000 // table[(T_undefined<<4)+T_String] = T_undefined ;
1001 // table[(T_undefined<<4)+T_Object] = T_undefined ;
1002 // table[(T_undefined<<4)+T_double] = T_undefined ;
1003 // table[(T_undefined<<4)+T_float] = T_undefined ;
1004 // table[(T_undefined<<4)+T_boolean] = T_undefined ;
1005 // table[(T_undefined<<4)+T_char] = T_undefined ;
1006 // table[(T_undefined<<4)+T_int] = T_undefined ;
1007 // table[(T_undefined<<4)+T_null] = T_undefined ;
1009 // table[(T_byte<<4)+T_undefined] = T_undefined ;
1010 table[(T_byte<<4)+T_byte] = (Byte2Int<<12)+(Byte2Int<<4)+T_boolean ;
1011 table[(T_byte<<4)+T_long] = (Byte2Long<<12)+(Long2Long<<4)+T_boolean ;
1012 table[(T_byte<<4)+T_short] = (Byte2Int<<12)+(Short2Int<<4)+T_boolean ;
1013 // table[(T_byte<<4)+T_void] = T_undefined ;
1014 // table[(T_byte<<4)+T_String] = T_undefined ;
1015 // table[(T_byte<<4)+T_Object] = T_undefined ;
1016 table[(T_byte<<4)+T_double] = (Byte2Double<<12)+(Double2Double<<4)+T_boolean ;
1017 table[(T_byte<<4)+T_float] = (Byte2Float<<12)+(Float2Float<<4)+T_boolean;
1018 // table[(T_byte<<4)+T_boolean] = T_undefined ;
1019 table[(T_byte<<4)+T_char] = (Byte2Int<<12)+(Char2Int<<4)+T_boolean ;
1020 table[(T_byte<<4)+T_int] = (Byte2Int<<12)+(Int2Int<<4)+T_boolean ;
1021 // table[(T_byte<<4)+T_null] = T_undefined ;
1023 // table[(T_long<<4)+T_undefined] = T_undefined ;
1024 table[(T_long<<4)+T_byte] = (Long2Long<<12)+(Byte2Long<<4)+T_boolean;
1025 table[(T_long<<4)+T_long] = (Long2Long<<12)+(Long2Long<<4)+T_boolean ;
1026 table[(T_long<<4)+T_short] = (Long2Long<<12)+(Short2Long<<4)+T_boolean ;
1027 // table[(T_long<<4)+T_void] = T_undefined ;
1028 // table[(T_long<<4)+T_String] = T_undefined ;
1029 // table[(T_long<<4)+T_Object] = T_undefined ;
1030 table[(T_long<<4)+T_double] = (Long2Double<<12)+(Double2Double<<4)+T_boolean ;
1031 table[(T_long<<4)+T_float] = (Long2Float<<12)+(Float2Float<<4)+T_boolean ;
1032 // table[(T_long<<4)+T_boolean] = T_undefined ;
1033 table[(T_long<<4)+T_char] = (Long2Long<<12)+(Char2Long<<4)+T_boolean ;
1034 table[(T_long<<4)+T_int] = (Long2Long<<12)+(Int2Long<<4)+T_boolean ;
1035 // table[(T_long<<4)+T_null] = T_undefined ;
1037 // table[(T_short<<4)+T_undefined] = T_undefined ;
1038 table[(T_short<<4)+T_byte] = (Short2Int<<12)+(Byte2Int<<4)+T_boolean ;
1039 table[(T_short<<4)+T_long] = (Short2Long<<12)+(Long2Long<<4)+T_boolean ;
1040 table[(T_short<<4)+T_short] = (Short2Int<<12)+(Short2Int<<4)+T_boolean ;
1041 // table[(T_short<<4)+T_void] = T_undefined ;
1042 // table[(T_short<<4)+T_String] = T_undefined ;
1043 // table[(T_short<<4)+T_Object] = T_undefined ;
1044 table[(T_short<<4)+T_double] = (Short2Double<<12)+(Double2Double<<4)+T_boolean ;
1045 table[(T_short<<4)+T_float] = (Short2Float<<12)+(Float2Float<<4)+T_boolean ;
1046 // table[(T_short<<4)+T_boolean] = T_undefined ;
1047 table[(T_short<<4)+T_char] = (Short2Int<<12)+(Char2Int<<4)+T_boolean ;
1048 table[(T_short<<4)+T_int] = (Short2Int<<12)+(Int2Int<<4)+T_boolean ;
1049 // table[(T_short<<4)+T_null] = T_undefined ;
1051 // table[(T_void<<4)+T_undefined] = T_undefined ;
1052 // table[(T_void<<4)+T_byte] = T_undefined ;
1053 // table[(T_void<<4)+T_long] = T_undefined ;
1054 // table[(T_void<<4)+T_short] = T_undefined ;
1055 // table[(T_void<<4)+T_void] = T_undefined ;
1056 // table[(T_void<<4)+T_String] = T_undefined ;
1057 // table[(T_void<<4)+T_Object] = T_undefined ;
1058 // table[(T_void<<4)+T_double] = T_undefined ;
1059 // table[(T_void<<4)+T_float] = T_undefined ;
1060 // table[(T_void<<4)+T_boolean] = T_undefined ;
1061 // table[(T_void<<4)+T_char] = T_undefined ;
1062 // table[(T_void<<4)+T_int] = T_undefined ;
1063 // table[(T_void<<4)+T_null] = T_undefined ;
1065 // table[(T_String<<4)+T_undefined] = T_undefined ;
1066 // table[(T_String<<4)+T_byte] = T_undefined ;
1067 // table[(T_String<<4)+T_long] = T_undefined ;
1068 // table[(T_String<<4)+T_short] = T_undefined ;
1069 // table[(T_String<<4)+T_void] = T_undefined ;
1070 // table[(T_String<<4)+T_String] = T_undefined ;
1071 // table[(T_String<<4)+T_Object] = T_undefined ;
1072 // table[(T_String<<4)+T_double] = T_undefined ;
1073 // table[(T_String<<4)+T_float] = T_undefined ;
1074 // table[(T_String<<4)+T_boolean] = T_undefined ;
1075 // table[(T_String<<4)+T_char] = T_undefined ;
1076 // table[(T_String<<4)+T_int] = T_undefined ;
1077 // table[(T_String<<4)+T_null] = T_undefined ;
1079 // table[(T_Object<<4)+T_undefined] = T_undefined ;
1080 // table[(T_Object<<4)+T_byte] = T_undefined ;
1081 // table[(T_Object<<4)+T_long] = T_undefined ;
1082 // table[(T_Object<<4)+T_short] = T_undefined ;
1083 // table[(T_Object<<4)+T_void] = T_undefined ;
1084 // table[(T_Object<<4)+T_String] = T_undefined ;
1085 // table[(T_Object<<4)+T_Object] = T_undefined ;
1086 // table[(T_Object<<4)+T_double] = T_undefined ;
1087 // table[(T_Object<<4)+T_float] = T_undefined ;
1088 // table[(T_Object<<4)+T_boolean] = T_undefined ;
1089 // table[(T_Object<<4)+T_char] = T_undefined ;
1090 // table[(T_Object<<4)+T_int] = T_undefined ;
1091 // table[(T_Object<<4)+T_null] = T_undefined ;
1093 // table[(T_double<<4)+T_undefined] = T_undefined ;
1094 table[(T_double<<4)+T_byte] = (Double2Double<<12)+(Byte2Double<<4)+T_boolean ;
1095 table[(T_double<<4)+T_long] = (Double2Double<<12)+(Long2Double<<4)+T_boolean;
1096 table[(T_double<<4)+T_short] = (Double2Double<<12)+(Short2Double<<4)+T_boolean ;
1097 // table[(T_double<<4)+T_void] = T_undefined ;
1098 // table[(T_double<<4)+T_String] = T_undefined ;
1099 // table[(T_double<<4)+T_Object] = T_undefined ;
1100 table[(T_double<<4)+T_double] = (Double2Double<<12)+(Double2Double<<4)+T_boolean ;
1101 table[(T_double<<4)+T_float] = (Double2Double<<12)+(Float2Double<<4)+T_boolean ;
1102 // table[(T_double<<4)+T_boolean] = T_undefined ;
1103 table[(T_double<<4)+T_char] = (Double2Double<<12)+(Char2Double<<4)+T_boolean ;
1104 table[(T_double<<4)+T_int] = (Double2Double<<12)+(Int2Double<<4)+T_boolean;
1105 // table[(T_double<<4)+T_null] = T_undefined ;
1107 // table[(T_float<<4)+T_undefined] = T_undefined ;
1108 table[(T_float<<4)+T_byte] = (Float2Float<<12)+(Byte2Float<<4)+T_boolean ;
1109 table[(T_float<<4)+T_long] = (Float2Float<<12)+(Long2Float<<4)+T_boolean ;
1110 table[(T_float<<4)+T_short] = (Float2Float<<12)+(Short2Float<<4)+T_boolean ;
1111 // table[(T_float<<4)+T_void] = T_undefined ;
1112 // table[(T_float<<4)+T_String] = T_undefined ;
1113 // table[(T_float<<4)+T_Object] = T_undefined ;
1114 table[(T_float<<4)+T_double] = (Float2Double<<12)+(Double2Double<<4)+T_boolean ;
1115 table[(T_float<<4)+T_float] = (Float2Float<<12)+(Float2Float<<4)+T_boolean ;
1116 // table[(T_float<<4)+T_boolean] = T_undefined ;
1117 table[(T_float<<4)+T_char] = (Float2Float<<12)+(Char2Float<<4)+T_boolean ;
1118 table[(T_float<<4)+T_int] = (Float2Float<<12)+(Int2Float<<4)+T_boolean ;
1119 // table[(T_float<<4)+T_null] = T_undefined ;
1121 // table[(T_boolean<<4)+T_undefined] = T_undefined ;
1122 // table[(T_boolean<<4)+T_byte] = T_undefined ;
1123 // table[(T_boolean<<4)+T_long] = T_undefined ;
1124 // table[(T_boolean<<4)+T_short] = T_undefined ;
1125 // table[(T_boolean<<4)+T_void] = T_undefined ;
1126 // table[(T_boolean<<4)+T_String] = T_undefined ;
1127 // table[(T_boolean<<4)+T_Object] = T_undefined ;
1128 // table[(T_boolean<<4)+T_double] = T_undefined ;
1129 // table[(T_boolean<<4)+T_float] = T_undefined ;
1130 // table[(T_boolean<<4)+T_boolean] = T_undefined ;
1131 // table[(T_boolean<<4)+T_char] = T_undefined ;
1132 // table[(T_boolean<<4)+T_int] = T_undefined ;
1133 // table[(T_boolean<<4)+T_null] = T_undefined ;
1135 // table[(T_char<<4)+T_undefined] = T_undefined ;
1136 table[(T_char<<4)+T_byte] = (Char2Int<<12)+(Byte2Int<<4)+T_boolean ;
1137 table[(T_char<<4)+T_long] = (Char2Long<<12)+(Long2Long<<4)+T_boolean ;
1138 table[(T_char<<4)+T_short] = (Char2Int<<12)+(Short2Int<<4)+T_boolean ;
1139 // table[(T_char<<4)+T_void] = T_undefined ;
1140 // table[(T_char<<4)+T_String] = T_undefined ;
1141 // table[(T_char<<4)+T_Object] = T_undefined ;
1142 table[(T_char<<4)+T_double] = (Char2Double<<12)+(Double2Double<<4)+T_boolean ;
1143 table[(T_char<<4)+T_float] = (Char2Float<<12)+(Float2Float<<4)+T_boolean ;
1144 // table[(T_char<<4)+T_boolean] = T_undefined ;
1145 table[(T_char<<4)+T_char] = (Char2Int<<12)+(Char2Int<<4)+T_boolean ;
1146 table[(T_char<<4)+T_int] = (Char2Int<<12)+(Int2Int<<4)+T_boolean ;
1147 // table[(T_char<<4)+T_null] = T_undefined ;
1149 // table[(T_int<<4)+T_undefined] = T_undefined ;
1150 table[(T_int<<4)+T_byte] = (Int2Int<<12)+(Byte2Int<<4)+T_boolean ;
1151 table[(T_int<<4)+T_long] = (Int2Long<<12)+(Long2Long<<4)+T_boolean;
1152 table[(T_int<<4)+T_short] = (Int2Int<<12)+(Short2Int<<4)+T_boolean ;
1153 // table[(T_int<<4)+T_void] = T_undefined ;
1154 // table[(T_int<<4)+T_String] = T_undefined ;
1155 // table[(T_int<<4)+T_Object] = T_undefined ;
1156 table[(T_int<<4)+T_double] = (Int2Double<<12)+(Double2Double<<4)+T_boolean ;
1157 table[(T_int<<4)+T_float] = (Int2Float<<12)+(Float2Float<<4)+T_boolean ;
1158 // table[(T_int<<4)+T_boolean] = T_undefined ;
1159 table[(T_int<<4)+T_char] = (Int2Int<<12)+(Char2Int<<4)+T_boolean ;
1160 table[(T_int<<4)+T_int] = (Int2Int<<12)+(Int2Int<<4)+T_boolean;
1161 // table[(T_int<<4)+T_null] = T_undefined ;
1163 // table[(T_null<<4)+T_undefined] = T_undefined ;
1164 // table[(T_null<<4)+T_byte] = T_undefined ;
1165 // table[(T_null<<4)+T_long] = T_undefined ;
1166 // table[(T_null<<4)+T_short] = T_undefined ;
1167 // table[(T_null<<4)+T_void] = T_undefined ;
1168 // table[(T_null<<4)+T_String] = T_undefined ;
1169 // table[(T_null<<4)+T_Object] = T_undefined ;
1170 // table[(T_null<<4)+T_double] = T_undefined ;
1171 // table[(T_null<<4)+T_float] = T_undefined ;
1172 // table[(T_null<<4)+T_boolean] = T_undefined ;
1173 // table[(T_null<<4)+T_char] = T_undefined ;
1174 // table[(T_null<<4)+T_int] = T_undefined ;
1175 // table[(T_null<<4)+T_null] = T_undefined ;
1180 public static final int[] get_LESS_EQUAL(){
1182 //the code is an int
1183 // (cast) left Op (cast) rigth --> result
1184 // 0000 0000 0000 0000 0000
1185 // <<16 <<12 <<8 <<4
1187 // int[] table = new int[16*16] ;
1191 public static final int[] get_MINUS(){
1193 //the code is an int
1194 // (cast) left Op (cast) rigth --> result
1195 // 0000 0000 0000 0000 0000
1196 // <<16 <<12 <<8 <<4
1198 int[] table = new int[16*16] ;
1200 table = (int[]) get_PLUS().clone();
1203 table[(T_String<<4)+T_byte] = T_undefined ;
1204 table[(T_String<<4)+T_long] = T_undefined ;
1205 table[(T_String<<4)+T_short] = T_undefined ;
1206 table[(T_String<<4)+T_void] = T_undefined ;
1207 table[(T_String<<4)+T_String] = T_undefined ;
1208 table[(T_String<<4)+T_Object] = T_undefined ;
1209 table[(T_String<<4)+T_double] = T_undefined ;
1210 table[(T_String<<4)+T_float] = T_undefined ;
1211 table[(T_String<<4)+T_boolean] = T_undefined ;
1212 table[(T_String<<4)+T_char] = T_undefined ;
1213 table[(T_String<<4)+T_int] = T_undefined ;
1214 table[(T_String<<4)+T_null] = T_undefined ;
1216 table[(T_byte<<4) +T_String] = T_undefined ;
1217 table[(T_long<<4) +T_String] = T_undefined ;
1218 table[(T_short<<4) +T_String] = T_undefined ;
1219 table[(T_void<<4) +T_String] = T_undefined ;
1220 table[(T_Object<<4) +T_String] = T_undefined ;
1221 table[(T_double<<4) +T_String] = T_undefined ;
1222 table[(T_float<<4) +T_String] = T_undefined ;
1223 table[(T_boolean<<4)+T_String] = T_undefined ;
1224 table[(T_char<<4) +T_String] = T_undefined ;
1225 table[(T_int<<4) +T_String] = T_undefined ;
1226 table[(T_null<<4) +T_String] = T_undefined ;
1228 table[(T_null<<4) +T_null] = T_undefined ;
1233 public static final int[] get_MULTIPLY(){
1235 //the code is an int
1236 // (cast) left Op (cast) rigth --> result
1237 // 0000 0000 0000 0000 0000
1238 // <<16 <<12 <<8 <<4
1240 // int[] table = new int[16*16] ;
1244 public static final int[] get_OR(){
1246 //the code is an int
1247 // (cast) left Op (cast) rigth --> result
1248 // 0000 0000 0000 0000 0000
1249 // <<16 <<12 <<8 <<4
1252 // int[] table = new int[16*16] ;
1256 public static final int[] get_OR_OR(){
1258 //the code is an int
1259 // (cast) left Op (cast) rigth --> result
1260 // 0000 0000 0000 0000 0000
1261 // <<16 <<12 <<8 <<4
1263 // int[] table = new int[16*16] ;
1264 return get_AND_AND() ;
1267 public static final int[] get_PLUS(){
1269 //the code is an int
1270 // (cast) left Op (cast) rigth --> result
1271 // 0000 0000 0000 0000 0000
1272 // <<16 <<12 <<8 <<4
1274 int[] table = new int[16*16] ;
1276 // table[(T_undefined<<4)+T_undefined] = T_undefined ;
1277 // table[(T_undefined<<4)+T_byte] = T_undefined ;
1278 // table[(T_undefined<<4)+T_long] = T_undefined ;
1279 // table[(T_undefined<<4)+T_short] = T_undefined ;
1280 // table[(T_undefined<<4)+T_void] = T_undefined ;
1281 // table[(T_undefined<<4)+T_String] = T_undefined ;
1282 // table[(T_undefined<<4)+T_Object] = T_undefined ;
1283 // table[(T_undefined<<4)+T_double] = T_undefined ;
1284 // table[(T_undefined<<4)+T_float] = T_undefined ;
1285 // table[(T_undefined<<4)+T_boolean] = T_undefined ;
1286 // table[(T_undefined<<4)+T_char] = T_undefined ;
1287 // table[(T_undefined<<4)+T_int] = T_undefined ;
1288 // table[(T_undefined<<4)+T_null] = T_undefined ;
1290 // table[(T_byte<<4)+T_undefined] = T_undefined ;
1291 table[(T_byte<<4)+T_byte] = (Byte2Int<<12)+(Byte2Int<<4)+T_int ;
1292 table[(T_byte<<4)+T_long] = (Byte2Long<<12)+(Long2Long<<4)+T_long ;
1293 table[(T_byte<<4)+T_short] = (Byte2Int<<12)+(Short2Int<<4)+T_int ;
1294 // table[(T_byte<<4)+T_void] = T_undefined ;
1295 table[(T_byte<<4)+T_String] = (Byte2Byte<<12)+(String2String<<4)+T_String ;
1296 // table[(T_byte<<4)+T_Object] = T_undefined ;
1297 table[(T_byte<<4)+T_double] = (Byte2Double<<12)+(Double2Double<<4)+T_double ;
1298 table[(T_byte<<4)+T_float] = (Byte2Float<<12)+(Float2Float<<4)+T_float;
1299 // table[(T_byte<<4)+T_boolean] = T_undefined ;
1300 table[(T_byte<<4)+T_char] = (Byte2Int<<12)+(Char2Int<<4)+T_int ;
1301 table[(T_byte<<4)+T_int] = (Byte2Int<<12)+(Int2Int<<4)+T_int ;
1302 // table[(T_byte<<4)+T_null] = T_undefined ;
1304 // table[(T_long<<4)+T_undefined] = T_undefined ;
1305 table[(T_long<<4)+T_byte] = (Long2Long<<12)+(Byte2Long<<4)+T_long;
1306 table[(T_long<<4)+T_long] = (Long2Long<<12)+(Long2Long<<4)+T_long ;
1307 table[(T_long<<4)+T_short] = (Long2Long<<12)+(Short2Long<<4)+T_long ;
1308 // table[(T_long<<4)+T_void] = T_undefined ;
1309 table[(T_long<<4)+T_String] = (Long2Long<<12)+(String2String<<4)+T_String ;
1310 // table[(T_long<<4)+T_Object] = T_undefined ;
1311 table[(T_long<<4)+T_double] = (Long2Double<<12)+(Double2Double<<4)+T_double ;
1312 table[(T_long<<4)+T_float] = (Long2Float<<12)+(Float2Float<<4)+T_float ;
1313 // table[(T_long<<4)+T_boolean] = T_undefined ;
1314 table[(T_long<<4)+T_char] = (Long2Long<<12)+(Char2Long<<4)+T_long ;
1315 table[(T_long<<4)+T_int] = (Long2Long<<12)+(Int2Long<<4)+T_long ; ;
1316 // table[(T_long<<4)+T_null] = T_undefined ;
1318 // table[(T_short<<4)+T_undefined] = T_undefined ;
1319 table[(T_short<<4)+T_byte] = (Short2Int<<12)+(Byte2Int<<4)+T_int ;
1320 table[(T_short<<4)+T_long] = (Short2Long<<12)+(Long2Long<<4)+T_long ;
1321 table[(T_short<<4)+T_short] = (Short2Int<<12)+(Short2Int<<4)+T_int ;
1322 // table[(T_short<<4)+T_void] = T_undefined ;
1323 table[(T_short<<4)+T_String] = (Short2Short<<12)+(String2String<<4)+T_String ;
1324 // table[(T_short<<4)+T_Object] = T_undefined ;
1325 table[(T_short<<4)+T_double] = (Short2Double<<12)+(Double2Double<<4)+T_double ;
1326 table[(T_short<<4)+T_float] = (Short2Float<<12)+(Float2Float<<4)+T_float ;
1327 // table[(T_short<<4)+T_boolean] = T_undefined ;
1328 table[(T_short<<4)+T_char] = (Short2Int<<12)+(Char2Int<<4)+T_int ;
1329 table[(T_short<<4)+T_int] = (Short2Int<<12)+(Int2Int<<4)+T_int ;
1330 // table[(T_short<<4)+T_null] = T_undefined ;
1332 // table[(T_void<<4)+T_undefined] = T_undefined ;
1333 // table[(T_void<<4)+T_byte] = T_undefined ;
1334 // table[(T_void<<4)+T_long] = T_undefined ;
1335 // table[(T_void<<4)+T_short] = T_undefined ;
1336 // table[(T_void<<4)+T_void] = T_undefined ;
1337 // table[(T_void<<4)+T_String] = T_undefined ;
1338 // table[(T_void<<4)+T_Object] = T_undefined ;
1339 // table[(T_void<<4)+T_double] = T_undefined ;
1340 // table[(T_void<<4)+T_float] = T_undefined ;
1341 // table[(T_void<<4)+T_boolean] = T_undefined ;
1342 // table[(T_void<<4)+T_char] = T_undefined ;
1343 // table[(T_void<<4)+T_int] = T_undefined ;
1344 // table[(T_void<<4)+T_null] = T_undefined ;
1346 // table[(T_String<<4)+T_undefined] = T_undefined ;
1347 table[(T_String<<4)+T_byte] = (String2String<<12)+(Byte2Byte<<4)+T_String ;
1348 table[(T_String<<4)+T_long] = (String2String<<12)+(Long2Long<<4)+T_String ;
1349 table[(T_String<<4)+T_short] = (String2String<<12)+(Short2Short<<4)+T_String ;
1350 // table[(T_String<<4)+T_void] = T_undefined ;
1351 table[(T_String<<4)+T_String] = (String2String<<12)+(String2String<<4)+T_String ;
1352 table[(T_String<<4)+T_Object] = (String2String<<12)+(Object2Object<<4)+T_String ;
1353 table[(T_String<<4)+T_double] = (String2String<<12)+(Double2Double<<4)+T_String ;
1354 table[(T_String<<4)+T_float] = (String2String<<12)+(Float2Float<<4)+T_String ;
1355 table[(T_String<<4)+T_boolean] = (String2String<<12)+(Boolean2Boolean<<4)+T_String ;
1356 table[(T_String<<4)+T_char] = (String2String<<12)+(Char2Char<<4)+T_String ;
1357 table[(T_String<<4)+T_int] = (String2String<<12)+(Int2Int<<4)+T_String ;
1358 table[(T_String<<4)+T_null] = (String2String<<12)+(T_null<<8)+(T_null<<4)+T_String ;
1360 // table[(T_Object<<4)+T_undefined] = T_undefined ;
1361 // table[(T_Object<<4)+T_byte] = T_undefined ;
1362 // table[(T_Object<<4)+T_long] = T_undefined ;
1363 // table[(T_Object<<4)+T_short] = T_undefined ;
1364 // table[(T_Object<<4)+T_void] = T_undefined ;
1365 table[(T_Object<<4)+T_String] = (Object2Object<<12)+(String2String<<4)+T_String ;
1366 // table[(T_Object<<4)+T_Object] = T_undefined ;
1367 // table[(T_Object<<4)+T_double] = T_undefined ;
1368 // table[(T_Object<<4)+T_float] = T_undefined ;
1369 // table[(T_Object<<4)+T_boolean] = T_undefined ;
1370 // table[(T_Object<<4)+T_char] = T_undefined ;
1371 // table[(T_Object<<4)+T_int] = T_undefined ;
1372 // table[(T_Object<<4)+T_null] = T_undefined ;
1374 // table[(T_double<<4)+T_undefined] = T_undefined ;
1375 table[(T_double<<4)+T_byte] = (Double2Double<<12)+(Byte2Double<<4)+T_double ;
1376 table[(T_double<<4)+T_long] = (Double2Double<<12)+(Long2Double<<4)+T_double ;
1377 table[(T_double<<4)+T_short] = (Double2Double<<12)+(Short2Double<<4)+T_double ; ;
1378 // table[(T_double<<4)+T_void] = T_undefined ;
1379 table[(T_double<<4)+T_String] = (Double2Double<<12)+(String2String<<4)+T_String ;
1380 // table[(T_double<<4)+T_Object] = T_undefined ;
1381 table[(T_double<<4)+T_double] = (Double2Double<<12)+(Double2Double<<4)+T_double ;
1382 table[(T_double<<4)+T_float] = (Double2Double<<12)+(Float2Double<<4)+T_double ; ;
1383 // table[(T_double<<4)+T_boolean] = T_undefined ;
1384 table[(T_double<<4)+T_char] = (Double2Double<<12)+(Char2Double<<4)+T_double ; ;
1385 table[(T_double<<4)+T_int] = (Double2Double<<12)+(Int2Double<<4)+T_double ; ;
1386 // table[(T_double<<4)+T_null] = T_undefined ;
1388 // table[(T_float<<4)+T_undefined] = T_undefined ;
1389 table[(T_float<<4)+T_byte] = (Float2Float<<12)+(Byte2Float<<4)+T_float ;
1390 table[(T_float<<4)+T_long] = (Float2Float<<12)+(Long2Float<<4)+T_float ;
1391 table[(T_float<<4)+T_short] = (Float2Float<<12)+(Short2Float<<4)+T_float ;
1392 // table[(T_float<<4)+T_void] = T_undefined ;
1393 table[(T_float<<4)+T_String] = (Float2Float<<12)+(String2String<<4)+T_String ;
1394 // table[(T_float<<4)+T_Object] = T_undefined ;
1395 table[(T_float<<4)+T_double] = (Float2Double<<12)+(Double2Double<<4)+T_double ;
1396 table[(T_float<<4)+T_float] = (Float2Float<<12)+(Float2Float<<4)+T_float ;
1397 // table[(T_float<<4)+T_boolean] = T_undefined ;
1398 table[(T_float<<4)+T_char] = (Float2Float<<12)+(Char2Float<<4)+T_float ;
1399 table[(T_float<<4)+T_int] = (Float2Float<<12)+(Int2Float<<4)+T_float ;
1400 // table[(T_float<<4)+T_null] = T_undefined ;
1402 // table[(T_boolean<<4)+T_undefined] = T_undefined ;
1403 // table[(T_boolean<<4)+T_byte] = T_undefined ;
1404 // table[(T_boolean<<4)+T_long] = T_undefined ;
1405 // table[(T_boolean<<4)+T_short] = T_undefined ;
1406 // table[(T_boolean<<4)+T_void] = T_undefined ;
1407 table[(T_boolean<<4)+T_String] = (Boolean2Boolean<<12)+(String2String<<4)+T_String ;
1408 // table[(T_boolean<<4)+T_Object] = T_undefined ;
1409 // table[(T_boolean<<4)+T_double] = T_undefined ;
1410 // table[(T_boolean<<4)+T_float] = T_undefined ;
1411 // table[(T_boolean<<4)+T_boolean] = T_undefined ;
1412 // table[(T_boolean<<4)+T_char] = T_undefined ;
1413 // table[(T_boolean<<4)+T_int] = T_undefined ;
1414 // table[(T_boolean<<4)+T_null] = T_undefined ;
1416 // table[(T_char<<4)+T_undefined] = T_undefined ;
1417 table[(T_char<<4)+T_byte] = (Char2Int<<12)+(Byte2Int<<4)+T_int ;
1418 table[(T_char<<4)+T_long] = (Char2Long<<12)+(Long2Long<<4)+T_long ;
1419 table[(T_char<<4)+T_short] = (Char2Int<<12)+(Short2Int<<4)+T_int ;
1420 // table[(T_char<<4)+T_void] = T_undefined ;
1421 table[(T_char<<4)+T_String] = (Char2Char<<12)+(String2String<<4)+T_String ;
1422 // table[(T_char<<4)+T_Object] = T_undefined ;
1423 table[(T_char<<4)+T_double] = (Char2Double<<12)+(Double2Double<<4)+T_double ;
1424 table[(T_char<<4)+T_float] = (Char2Float<<12)+(Float2Float<<4)+T_float ;
1425 // table[(T_char<<4)+T_boolean] = T_undefined ;
1426 table[(T_char<<4)+T_char] = (Char2Int<<12)+(Char2Int<<4)+T_int ; ;
1427 table[(T_char<<4)+T_int] = (Char2Int<<12)+(Int2Int<<4)+T_int ;
1428 // table[(T_char<<4)+T_null] = T_undefined ;
1430 // table[(T_int<<4)+T_undefined] = T_undefined ;
1431 table[(T_int<<4)+T_byte] = (Int2Int<<12)+(Byte2Int<<4)+T_int ;
1432 table[(T_int<<4)+T_long] = (Int2Long<<12)+(Long2Long<<4)+T_long ;
1433 table[(T_int<<4)+T_short] = (Int2Int<<12)+(Short2Int<<4)+T_int ;
1434 // table[(T_int<<4)+T_void] = T_undefined ;
1435 table[(T_int<<4)+T_String] = (Int2Int<<12)+(String2String<<4)+T_String ;
1436 // table[(T_int<<4)+T_Object] = T_undefined ;
1437 table[(T_int<<4)+T_double] = (Int2Double<<12)+(Double2Double<<4)+T_double ;
1438 table[(T_int<<4)+T_float] = (Int2Float<<12)+(Float2Float<<4)+T_float ;
1439 // table[(T_int<<4)+T_boolean] = T_undefined ;
1440 table[(T_int<<4)+T_char] = (Int2Int<<12)+(Char2Int<<4)+T_int ;
1441 table[(T_int<<4)+T_int] = (Int2Int<<12)+(Int2Int<<4)+T_int ;
1442 // table[(T_int<<4)+T_null] = T_undefined ;
1444 // table[(T_null<<4)+T_undefined] = T_undefined ;
1445 // table[(T_null<<4)+T_byte] = T_undefined ;
1446 // table[(T_null<<4)+T_long] = T_undefined ;
1447 // table[(T_null<<4)+T_short] = T_undefined ;
1448 // table[(T_null<<4)+T_void] = T_undefined ;
1449 table[(T_null<<4)+T_String] = (T_null<<16)+(T_null<<12)+(String2String<<4)+T_String ;
1450 // table[(T_null<<4)+T_Object] = T_undefined ;
1451 // table[(T_null<<4)+T_double] = T_undefined ;
1452 // table[(T_null<<4)+T_float] = T_undefined ;
1453 // table[(T_null<<4)+T_boolean] = T_undefined ;
1454 // table[(T_null<<4)+T_char] = T_undefined ;
1455 // table[(T_null<<4)+T_int] = T_undefined ;
1456 // table[(T_null<<4)+T_null] = (Null2String<<12)+(Null2String<<4)+T_String ;;
1461 public static final int[] get_REMAINDER(){
1463 //the code is an int
1464 // (cast) left Op (cast) rigth --> result
1465 // 0000 0000 0000 0000 0000
1466 // <<16 <<12 <<8 <<4
1468 // int[] table = new int[16*16] ;
1472 public static final int[] get_RIGHT_SHIFT(){
1474 //the code is an int
1475 // (cast) left Op (cast) rigth --> result
1476 // 0000 0000 0000 0000 0000
1477 // <<16 <<12 <<8 <<4
1479 // int[] table = new int[16*16] ;
1480 return get_LEFT_SHIFT();
1483 public static final int[] get_UNSIGNED_RIGHT_SHIFT(){
1485 //the code is an int
1486 // (cast) left Op (cast) rigth --> result
1487 // 0000 0000 0000 0000 0000
1488 // <<16 <<12 <<8 <<4
1490 // int[] table = new int[16*16] ;
1491 return get_LEFT_SHIFT();
1494 public static final int[] get_XOR(){
1496 //the code is an int
1497 // (cast) left Op (cast) rigth --> result
1498 // 0000 0000 0000 0000 0000
1499 // <<16 <<12 <<8 <<4
1501 // int[] table = new int[16*16] ;
1505 public String operatorToString() {
1506 switch ((bits & OperatorMASK) >> OperatorSHIFT) {
1508 return "=="; //$NON-NLS-1$
1510 return "<="; //$NON-NLS-1$
1511 case GREATER_EQUAL :
1512 return ">="; //$NON-NLS-1$
1514 return "!="; //$NON-NLS-1$
1516 return "<<"; //$NON-NLS-1$
1518 return ">>"; //$NON-NLS-1$
1519 case UNSIGNED_RIGHT_SHIFT :
1520 return ">>>"; //$NON-NLS-1$
1522 return "||"; //$NON-NLS-1$
1524 return "&&"; //$NON-NLS-1$
1526 return "+"; //$NON-NLS-1$
1528 return "-"; //$NON-NLS-1$
1530 return "!"; //$NON-NLS-1$
1532 return "%"; //$NON-NLS-1$
1534 return "^"; //$NON-NLS-1$
1536 return "&"; //$NON-NLS-1$
1538 return "*"; //$NON-NLS-1$
1540 return "|"; //$NON-NLS-1$
1542 return "~"; //$NON-NLS-1$
1544 return "/"; //$NON-NLS-1$
1546 return ">"; //$NON-NLS-1$
1548 return "<"; //$NON-NLS-1$
1549 case QUESTIONCOLON :
1550 return "?:"; //$NON-NLS-1$
1552 return "="; //$NON-NLS-1$
1554 return "unknown operator"; //$NON-NLS-1$
1557 public String toStringExpression(){
1559 //subclass redefine toStringExpressionNoParenthesis()
1560 return "(" + toStringExpressionNoParenthesis() + ")"; //$NON-NLS-2$ //$NON-NLS-1$
1563 public abstract String toStringExpressionNoParenthesis();