+/*******************************************************************************
+ * Copyright (c) 2000, 2003 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Common Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/cpl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
package net.sourceforge.phpdt.internal.compiler.ast;
-/**
- * Any expression that have an operator.
- * @author Matthieu Casanova
- */
-public abstract class OperatorExpression
- extends Expression
- implements OperatorIds {
-
- public int operator;
-
- public OperatorExpression(final int operator, final int sourceStart, final int sourceEnd) {
- super(sourceStart, sourceEnd);
- this.operator = operator;
- }
-
- public String operatorToString() {
- switch (operator) {
- case EQUAL_EQUAL:
- return "=="; //$NON-NLS-1$
- case LESS_EQUAL:
- return "<="; //$NON-NLS-1$
- case GREATER_EQUAL:
- return ">="; //$NON-NLS-1$
- case NOT_EQUAL:
- return "!="; //$NON-NLS-1$
- case LEFT_SHIFT:
- return "<<"; //$NON-NLS-1$
- case RIGHT_SHIFT:
- return ">>"; //$NON-NLS-1$
- case UNSIGNED_RIGHT_SHIFT:
- return ">>>"; //$NON-NLS-1$
- case OR_OR:
- return "||"; //$NON-NLS-1$
- case AND_AND:
- return "&&"; //$NON-NLS-1$
- case PLUS:
- return "+"; //$NON-NLS-1$
- case MINUS:
- return "-"; //$NON-NLS-1$
- case NOT:
- return "!"; //$NON-NLS-1$
- case REMAINDER:
- return "%"; //$NON-NLS-1$
- case XOR:
- return "^"; //$NON-NLS-1$
- case AND:
- return "&"; //$NON-NLS-1$
- case MULTIPLY:
- return "*"; //$NON-NLS-1$
- case OR:
- return "|"; //$NON-NLS-1$
- case TWIDDLE:
- return "~"; //$NON-NLS-1$
- case DIVIDE:
- return "/"; //$NON-NLS-1$
- case GREATER:
- return ">"; //$NON-NLS-1$
- case LESS:
- return "<"; //$NON-NLS-1$
- case ORL:
- return "OR"; //$NON-NLS-1$
- case ANDL:
- return "AND"; //$NON-NLS-1$
- case DOT:
- return "."; //$NON-NLS-1$
- case DIF:
- return "<>"; //$NON-NLS-1$
- case BANG_EQUAL_EQUAL:
- return "!=="; //$NON-NLS-1$
- case EQUAL_EQUAL_EQUAL:
- return "==="; //$NON-NLS-1$
- case EQUAL:
- return "="; //$NON-NLS-1$
- case AT:
- return "@"; //$NON-NLS-1$
- case PLUS_PLUS:
- return "++"; //$NON-NLS-1$
- case MINUS_MINUS:
- return "--"; //$NON-NLS-1$
- case NEW:
- return "new "; //$NON-NLS-1$
- }
- return "unknown operator " +operator; //$NON-NLS-1$
- }
+public abstract class OperatorExpression extends Expression implements
+ OperatorIds {
+
+ public static int[][] ResolveTypeTables = new int[NumberOfTables][];
+
+ static {
+ classInitialize();
+ }
+
+ /**
+ * OperatorExpression constructor comment.
+ */
+ public OperatorExpression() {
+ super();
+ }
+
+ public static final void classInitialize() {
+ ResolveTypeTables[AND] = get_AND();
+ ResolveTypeTables[AND_AND] = get_AND_AND();
+ ResolveTypeTables[DIVIDE] = get_DIVIDE();
+ ResolveTypeTables[EQUAL_EQUAL] = get_EQUAL_EQUAL();
+ ResolveTypeTables[GREATER] = get_GREATER();
+ ResolveTypeTables[GREATER_EQUAL] = get_GREATER_EQUAL();
+ ResolveTypeTables[LEFT_SHIFT] = get_LEFT_SHIFT();
+ ResolveTypeTables[LESS] = get_LESS();
+ ResolveTypeTables[LESS_EQUAL] = get_LESS_EQUAL();
+ ResolveTypeTables[MINUS] = get_MINUS();
+ ResolveTypeTables[MULTIPLY] = get_MULTIPLY();
+ ResolveTypeTables[OR] = get_OR();
+ ResolveTypeTables[OR_OR] = get_OR_OR();
+ ResolveTypeTables[PLUS] = get_PLUS();
+ ResolveTypeTables[REMAINDER] = get_REMAINDER();
+ ResolveTypeTables[RIGHT_SHIFT] = get_RIGHT_SHIFT();
+ ResolveTypeTables[UNSIGNED_RIGHT_SHIFT] = get_UNSIGNED_RIGHT_SHIFT();
+ ResolveTypeTables[XOR] = get_XOR();
+ }
+
+ public static final String generateTableTestCase() {
+ // return a String which is a java method allowing to test
+ // the non zero entries of all tables
+
+ /*
+ * net.sourceforge.phpdt.internal.compiler.ast.
+ * OperatorExpression.generateTableTestCase();
+ */
+
+ int[] operators = new int[] { AND, AND_AND, DIVIDE, GREATER,
+ GREATER_EQUAL, LEFT_SHIFT, LESS, LESS_EQUAL, MINUS, MULTIPLY,
+ OR, OR_OR, PLUS, REMAINDER, RIGHT_SHIFT, UNSIGNED_RIGHT_SHIFT,
+ XOR };
+
+ class Decode {
+ public final String constant(int code) {
+ switch (code) {
+ case T_boolean:
+ return "true"; //$NON-NLS-1$
+ case T_byte:
+ return "((byte) 3)"; //$NON-NLS-1$
+ case T_char:
+ return "'A'"; //$NON-NLS-1$
+ case T_double:
+ return "300.0d"; //$NON-NLS-1$
+ case T_float:
+ return "100.0f"; //$NON-NLS-1$
+ case T_int:
+ return "1"; //$NON-NLS-1$
+ case T_long:
+ return "7L"; //$NON-NLS-1$
+ case T_String:
+ return "\"hello-world\""; //$NON-NLS-1$
+ case T_null:
+ return "null"; //$NON-NLS-1$
+ case T_short:
+ return "((short) 5)"; //$NON-NLS-1$
+ case T_Object:
+ return "null";} //$NON-NLS-1$
+ return "";} //$NON-NLS-1$
+
+ public final String type(int code) {
+ switch (code) {
+ case T_boolean:
+ return "z"; //$NON-NLS-1$
+ case T_byte:
+ return "b"; //$NON-NLS-1$
+ case T_char:
+ return "c"; //$NON-NLS-1$
+ case T_double:
+ return "d"; //$NON-NLS-1$
+ case T_float:
+ return "f"; //$NON-NLS-1$
+ case T_int:
+ return "i"; //$NON-NLS-1$
+ case T_long:
+ return "l"; //$NON-NLS-1$
+ case T_String:
+ return "str"; //$NON-NLS-1$
+ case T_null:
+ return "null"; //$NON-NLS-1$
+ case T_short:
+ return "s"; //$NON-NLS-1$
+ case T_Object:
+ return "obj";} //$NON-NLS-1$
+ return "xxx";} //$NON-NLS-1$
+
+ public final String operator(int operator) {
+ switch (operator) {
+ case EQUAL_EQUAL:
+ return "=="; //$NON-NLS-1$
+ case LESS_EQUAL:
+ return "<="; //$NON-NLS-1$
+ case GREATER_EQUAL:
+ return ">="; //$NON-NLS-1$
+ case LEFT_SHIFT:
+ return "<<"; //$NON-NLS-1$
+ case RIGHT_SHIFT:
+ return ">>"; //$NON-NLS-1$
+ case UNSIGNED_RIGHT_SHIFT:
+ return ">>>"; //$NON-NLS-1$
+ case OR_OR:
+ return "||"; //$NON-NLS-1$
+ case AND_AND:
+ return "&&"; //$NON-NLS-1$
+ case PLUS:
+ return "+"; //$NON-NLS-1$
+ case MINUS:
+ return "-"; //$NON-NLS-1$
+ case NOT:
+ return "!"; //$NON-NLS-1$
+ case REMAINDER:
+ return "%"; //$NON-NLS-1$
+ case XOR:
+ return "^"; //$NON-NLS-1$
+ case AND:
+ return "&"; //$NON-NLS-1$
+ case MULTIPLY:
+ return "*"; //$NON-NLS-1$
+ case OR:
+ return "|"; //$NON-NLS-1$
+ case TWIDDLE:
+ return "~"; //$NON-NLS-1$
+ case DIVIDE:
+ return "/"; //$NON-NLS-1$
+ case GREATER:
+ return ">"; //$NON-NLS-1$
+ case LESS:
+ return "<";}; //$NON-NLS-1$
+ return "????";} //$NON-NLS-1$
+ }
+
+ Decode decode = new Decode();
+ String s;
+
+ s = "\tpublic static void binaryOperationTablesTestCase(){\n" + //$NON-NLS-1$
+
+ "\t\t//TC test : all binary operation (described in tables)\n"
+ + //$NON-NLS-1$
+ "\t\t//method automatically generated by\n"
+ + //$NON-NLS-1$
+ "\t\t//net.sourceforge.phpdt.internal.compiler.ast.OperatorExpression.generateTableTestCase();\n"
+ + //$NON-NLS-1$
+
+ "\t\tString str0 ;\t String str\t= "
+ + decode.constant(T_String)
+ + ";\n" + //$NON-NLS-1$ //$NON-NLS-2$
+ "\t\tint i0 ;\t int i\t= "
+ + decode.constant(T_int)
+ + " ;\n" + //$NON-NLS-1$ //$NON-NLS-2$
+ "\t\tboolean z0;\t boolean z\t= "
+ + decode.constant(T_boolean)
+ + ";\n" + //$NON-NLS-1$ //$NON-NLS-2$
+ "\t\tchar c0; \t char c\t= "
+ + decode.constant(T_char)
+ + " ;\n" + //$NON-NLS-1$ //$NON-NLS-2$
+ "\t\tfloat f0; \t float f\t= "
+ + decode.constant(T_float)
+ + " ;\n" + //$NON-NLS-1$ //$NON-NLS-2$
+ "\t\tdouble d0;\t double d\t= "
+ + decode.constant(T_double)
+ + " ;\n" + //$NON-NLS-1$ //$NON-NLS-2$
+ "\t\tbyte b0; \t byte b\t= "
+ + decode.constant(T_byte)
+ + ";\n" + //$NON-NLS-1$ //$NON-NLS-2$
+ "\t\tshort s0; \t short s\t= "
+ + decode.constant(T_short)
+ + ";\n" + //$NON-NLS-1$ //$NON-NLS-2$
+ "\t\tlong l0; \t long l\t= "
+ + decode.constant(T_long)
+ + " ;\n" + //$NON-NLS-1$ //$NON-NLS-2$
+ "\t\tObject obj0; \t Object obj\t= "
+ + decode.constant(T_Object) + " ;\n" + //$NON-NLS-1$ //$NON-NLS-2$
+ "\n"; //$NON-NLS-1$
+
+ int error = 0;
+ for (int i = 0; i < operators.length; i++) {
+ int operator = operators[i];
+ for (int left = 0; left < 16; left++)
+ for (int right = 0; right < 16; right++) {
+ int result = (ResolveTypeTables[operator][(left << 4)
+ + right]) & 0x0000F;
+ if (result != T_undefined)
+
+ // 1/ First regular computation then 2/ comparaison
+ // with a compile time constant (generated by the compiler)
+ // z0 = s >= s;
+ // if ( z0 != (((short) 5) >= ((short) 5)))
+ // System.out.println(155);
+
+ {
+ s += "\t\t" + decode.type(result) + "0" + " = " + decode.type(left); //$NON-NLS-1$ //$NON-NLS-3$ //$NON-NLS-2$
+ s += " " + decode.operator(operator) + " " + decode.type(right) + ";\n"; //$NON-NLS-2$ //$NON-NLS-1$ //$NON-NLS-3$
+ String begin = result == T_String ? "\t\tif (! " : "\t\tif ( "; //$NON-NLS-2$ //$NON-NLS-1$
+ String test = result == T_String ? ".equals(" : " != ("; //$NON-NLS-2$ //$NON-NLS-1$
+ s += begin + decode.type(result) + "0" + test //$NON-NLS-1$
+ + decode.constant(left) + " " //$NON-NLS-1$
+ + decode.operator(operator) + " " //$NON-NLS-1$
+ + decode.constant(right) + "))\n"; //$NON-NLS-1$
+ s += "\t\t\tSystem.out.println(" + (++error) + ");\n"; //$NON-NLS-1$ //$NON-NLS-2$
+
+ }
+ }
+ }
+
+ return s += "\n\t\tSystem.out.println(\"binary tables test : done\");}"; //$NON-NLS-1$
+ }
+
+ public static final int[] get_AND() {
+
+ // the code is an int
+ // (cast) left Op (cast) rigth --> result
+ // 0000 0000 0000 0000 0000
+ // <<16 <<12 <<8 <<4
+
+ int[] table = new int[16 * 16];
+
+ // table[(T_undefined<<4)+T_undefined] = T_undefined ;
+ // table[(T_undefined<<4)+T_byte] = T_undefined ;
+ // table[(T_undefined<<4)+T_long] = T_undefined ;
+ // table[(T_undefined<<4)+T_short] = T_undefined ;
+ // table[(T_undefined<<4)+T_void] = T_undefined ;
+ // table[(T_undefined<<4)+T_String] = T_undefined ;
+ // table[(T_undefined<<4)+T_Object] = T_undefined ;
+ // table[(T_undefined<<4)+T_double] = T_undefined ;
+ // table[(T_undefined<<4)+T_float] = T_undefined ;
+ // table[(T_undefined<<4)+T_boolean] = T_undefined ;
+ // table[(T_undefined<<4)+T_char] = T_undefined ;
+ // table[(T_undefined<<4)+T_int] = T_undefined ;
+ // table[(T_undefined<<4)+T_null] = T_undefined ;
+
+ // table[(T_byte<<4)+T_undefined] = T_undefined ;
+ table[(T_byte << 4) + T_byte] = (Byte2Int << 12) + (Byte2Int << 4)
+ + T_int;
+ table[(T_byte << 4) + T_long] = (Byte2Long << 12) + (Long2Long << 4)
+ + T_long;
+ table[(T_byte << 4) + T_short] = (Byte2Int << 12) + (Short2Int << 4)
+ + T_int;
+ // table[(T_byte<<4)+T_void] = T_undefined ;
+ // table[(T_byte<<4)+T_String] = T_undefined ;
+ // table[(T_byte<<4)+T_Object] = T_undefined ;
+ // table[(T_byte<<4)+T_double] = T_undefined ;
+ // table[(T_byte<<4)+T_float] = T_undefined ;
+ // table[(T_byte<<4)+T_boolean] = T_undefined ;
+ table[(T_byte << 4) + T_char] = (Byte2Int << 12) + (Char2Int << 4)
+ + T_int;
+ table[(T_byte << 4) + T_int] = (Byte2Int << 12) + (Int2Int << 4)
+ + T_int;
+ // table[(T_byte<<4)+T_null] = T_undefined ;
+
+ // table[(T_long<<4)+T_undefined] = T_undefined ;
+ table[(T_long << 4) + T_byte] = (Long2Long << 12) + (Byte2Long << 4)
+ + T_long;
+ table[(T_long << 4) + T_long] = (Long2Long << 12) + (Long2Long << 4)
+ + T_long;
+ table[(T_long << 4) + T_short] = (Long2Long << 12) + (Short2Long << 4)
+ + T_long;
+ ;
+ // table[(T_long<<4)+T_void] = T_undefined ;
+ // table[(T_long<<4)+T_String] = T_undefined ;
+ // table[(T_long<<4)+T_Object] = T_undefined ;
+ // table[(T_long<<4)+T_double] = T_undefined ;
+ // table[(T_long<<4)+T_float] = T_undefined ;
+ // table[(T_long<<4)+T_boolean] = T_undefined ;
+ table[(T_long << 4) + T_char] = (Long2Long << 12) + (Char2Long << 4)
+ + T_long;
+ table[(T_long << 4) + T_int] = (Long2Long << 12) + (Int2Long << 4)
+ + T_long;
+ // table[(T_long<<4)+T_null] = T_undefined ;
+
+ // table[(T_short<<4)+T_undefined] = T_undefined ;
+ table[(T_short << 4) + T_byte] = (Short2Int << 12) + (Byte2Int << 4)
+ + T_int;
+ table[(T_short << 4) + T_long] = (Short2Long << 12) + (Long2Long << 4)
+ + T_long;
+ table[(T_short << 4) + T_short] = (Short2Int << 12) + (Short2Int << 4)
+ + T_int;
+ // table[(T_short<<4)+T_void] = T_undefined ;
+ // table[(T_short<<4)+T_String] = T_undefined ;
+ // table[(T_short<<4)+T_Object] = T_undefined ;
+ // table[(T_short<<4)+T_double] = T_undefined ;
+ // table[(T_short<<4)+T_float] = T_undefined ;
+ // table[(T_short<<4)+T_boolean] = T_undefined ;
+ table[(T_short << 4) + T_char] = (Short2Int << 12) + (Char2Int << 4)
+ + T_int;
+ table[(T_short << 4) + T_int] = (Short2Int << 12) + (Int2Int << 4)
+ + T_int;
+ // table[(T_short<<4)+T_null] = T_undefined ;
+
+ // table[(T_void<<4)+T_undefined] = T_undefined ;
+ // table[(T_void<<4)+T_byte] = T_undefined ;
+ // table[(T_void<<4)+T_long] = T_undefined ;
+ // table[(T_void<<4)+T_short] = T_undefined ;
+ // table[(T_void<<4)+T_void] = T_undefined ;
+ // table[(T_void<<4)+T_String] = T_undefined ;
+ // table[(T_void<<4)+T_Object] = T_undefined ;
+ // table[(T_void<<4)+T_double] = T_undefined ;
+ // table[(T_void<<4)+T_float] = T_undefined ;
+ // table[(T_void<<4)+T_boolean] = T_undefined ;
+ // table[(T_void<<4)+T_char] = T_undefined ;
+ // table[(T_void<<4)+T_int] = T_undefined ;
+ // table[(T_void<<4)+T_null] = T_undefined ;
+
+ // table[(T_String<<4)+T_undefined] = T_undefined ;
+ // table[(T_String<<4)+T_byte] = T_undefined ;
+ // table[(T_String<<4)+T_long] = T_undefined ;
+ // table[(T_String<<4)+T_short] = T_undefined ;
+ // table[(T_String<<4)+T_void] = T_undefined ;
+ // table[(T_String<<4)+T_String] = T_undefined ;
+ // table[(T_String<<4)+T_Object] = T_undefined ;
+ // table[(T_String<<4)+T_double] = T_undefined ;
+ // table[(T_String<<4)+T_float] = T_undefined ;
+ // table[(T_String<<4)+T_boolean] = T_undefined ;
+ // table[(T_String<<4)+T_char] = T_undefined ;
+ // table[(T_String<<4)+T_int] = T_undefined ;
+ // table[(T_String<<4)+T_null] = T_undefined ;
+
+ // table[(T_Object<<4)+T_undefined] = T_undefined ;
+ // table[(T_Object<<4)+T_byte] = T_undefined ;
+ // table[(T_Object<<4)+T_long] = T_undefined ;
+ // table[(T_Object<<4)+T_short] = T_undefined ;
+ // table[(T_Object<<4)+T_void] = T_undefined ;
+ // table[(T_Object<<4)+T_String] = T_undefined ;
+ // table[(T_Object<<4)+T_Object] = T_undefined ;
+ // table[(T_Object<<4)+T_double] = T_undefined ;
+ // table[(T_Object<<4)+T_float] = T_undefined ;
+ // table[(T_Object<<4)+T_boolean] = T_undefined ;
+ // table[(T_Object<<4)+T_char] = T_undefined ;
+ // table[(T_Object<<4)+T_int] = T_undefined ;
+ // table[(T_Object<<4)+T_null] = T_undefined ;
+
+ // table[(T_double<<4)+T_undefined] = T_undefined ;
+ // table[(T_double<<4)+T_byte] = T_undefined ;
+ // table[(T_double<<4)+T_long] = T_undefined ;
+ // table[(T_double<<4)+T_short] = T_undefined ;
+ // table[(T_double<<4)+T_void] = T_undefined ;
+ // table[(T_double<<4)+T_String] = T_undefined ;
+ // table[(T_double<<4)+T_Object] = T_undefined ;
+ // table[(T_double<<4)+T_double] = T_undefined ;
+ // table[(T_double<<4)+T_float] = T_undefined ;
+ // table[(T_double<<4)+T_boolean] = T_undefined ;
+ // table[(T_double<<4)+T_char] = T_undefined ;
+ // table[(T_double<<4)+T_int] = T_undefined;
+ // table[(T_double<<4)+T_null] = T_undefined ;
+
+ // table[(T_float<<4)+T_undefined] = T_undefined ;
+ // table[(T_float<<4)+T_byte] = T_undefined ;
+ // table[(T_float<<4)+T_long] = T_undefined ;
+ // table[(T_float<<4)+T_short] = T_undefined ;
+ // table[(T_float<<4)+T_void] = T_undefined ;
+ // table[(T_float<<4)+T_String] = T_undefined ;
+ // table[(T_float<<4)+T_Object] = T_undefined ;
+ // table[(T_float<<4)+T_double] = T_undefined ;
+ // table[(T_float<<4)+T_float] = T_undefined ;
+ // table[(T_float<<4)+T_boolean] = T_undefined ;
+ // table[(T_float<<4)+T_char] = T_undefined ;
+ // table[(T_float<<4)+T_int] = T_undefined ;
+ // table[(T_float<<4)+T_null] = T_undefined ;
+
+ // table[(T_boolean<<4)+T_undefined] = T_undefined ;
+ // table[(T_boolean<<4)+T_byte] = T_undefined ;
+ // table[(T_boolean<<4)+T_long] = T_undefined ;
+ // table[(T_boolean<<4)+T_short] = T_undefined ;
+ // table[(T_boolean<<4)+T_void] = T_undefined ;
+ // table[(T_boolean<<4)+T_String] = T_undefined ;
+ // table[(T_boolean<<4)+T_Object] = T_undefined ;
+ // table[(T_boolean<<4)+T_double] = T_undefined ;
+ // table[(T_boolean<<4)+T_float] = T_undefined ;
+ table[(T_boolean << 4) + T_boolean] = (Boolean2Boolean << 12)
+ + (Boolean2Boolean << 4) + T_boolean;
+ // table[(T_boolean<<4)+T_char] = T_undefined ;
+ // table[(T_boolean<<4)+T_int] = T_undefined ;
+ // table[(T_boolean<<4)+T_null] = T_undefined ;
+
+ // table[(T_char<<4)+T_undefined] = T_undefined ;
+ table[(T_char << 4) + T_byte] = (Char2Int << 12) + (Byte2Int << 4)
+ + T_int;
+ table[(T_char << 4) + T_long] = (Char2Long << 12) + (Long2Long << 4)
+ + T_long;
+ table[(T_char << 4) + T_short] = (Char2Int << 12) + (Short2Int << 4)
+ + T_int;
+ // table[(T_char<<4)+T_void] = T_undefined ;
+ // table[(T_char<<4)+T_String] = T_undefined ;
+ // table[(T_char<<4)+T_Object] = T_undefined ;
+ // table[(T_char<<4)+T_double] = T_undefined ;
+ // table[(T_char<<4)+T_float] = T_undefined ;
+ // table[(T_char<<4)+T_boolean] = T_undefined ;
+ table[(T_char << 4) + T_char] = (Char2Int << 12) + (Char2Int << 4)
+ + T_int;
+ table[(T_char << 4) + T_int] = (Char2Int << 12) + (Int2Int << 4)
+ + T_int;
+ // table[(T_char<<4)+T_null] = T_undefined ;
+
+ // table[(T_int<<4)+T_undefined] = T_undefined ;
+ table[(T_int << 4) + T_byte] = (Int2Int << 12) + (Byte2Int << 4)
+ + T_int;
+ table[(T_int << 4) + T_long] = (Int2Long << 12) + (Long2Long << 4)
+ + T_long;
+ table[(T_int << 4) + T_short] = (Int2Int << 12) + (Short2Int << 4)
+ + T_int;
+ // table[(T_int<<4)+T_void] = T_undefined ;
+ // table[(T_int<<4)+T_String] = T_undefined ;
+ // table[(T_int<<4)+T_Object] = T_undefined ;
+ // table[(T_int<<4)+T_double] = T_undefined ;
+ // table[(T_int<<4)+T_float] = T_undefined ;
+ // table[(T_int<<4)+T_boolean] = T_undefined ;
+ table[(T_int << 4) + T_char] = (Int2Int << 12) + (Char2Int << 4)
+ + T_int;
+ table[(T_int << 4) + T_int] = (Int2Int << 12) + (Int2Int << 4) + T_int;
+ // table[(T_int<<4)+T_null] = T_undefined ;
+
+ // table[(T_null<<4)+T_undefined] = T_undefined ;
+ // table[(T_null<<4)+T_byte] = T_undefined ;
+ // table[(T_null<<4)+T_long] = T_undefined ;
+ // table[(T_null<<4)+T_short] = T_undefined ;
+ // table[(T_null<<4)+T_void] = T_undefined ;
+ // table[(T_null<<4)+T_String] = T_undefined ;
+ // table[(T_null<<4)+T_Object] = T_undefined ;
+ // table[(T_null<<4)+T_double] = T_undefined ;
+ // table[(T_null<<4)+T_float] = T_undefined ;
+ // table[(T_null<<4)+T_boolean] = T_undefined ;
+ // table[(T_null<<4)+T_char] = T_undefined ;
+ // table[(T_null<<4)+T_int] = T_undefined ;
+ // table[(T_null<<4)+T_null] = T_undefined ;
+
+ return table;
+ }
+
+ public static final int[] get_AND_AND() {
+
+ // the code is an int
+ // (cast) left Op (cast) rigth --> result
+ // 0000 0000 0000 0000 0000
+ // <<16 <<12 <<8 <<4
+
+ int[] table = new int[16 * 16];
+
+ // table[(T_undefined<<4)+T_undefined] = T_undefined ;
+ // table[(T_undefined<<4)+T_byte] = T_undefined ;
+ // table[(T_undefined<<4)+T_long] = T_undefined ;
+ // table[(T_undefined<<4)+T_short] = T_undefined ;
+ // table[(T_undefined<<4)+T_void] = T_undefined ;
+ // table[(T_undefined<<4)+T_String] = T_undefined ;
+ // table[(T_undefined<<4)+T_Object] = T_undefined ;
+ // table[(T_undefined<<4)+T_double] = T_undefined ;
+ // table[(T_undefined<<4)+T_float] = T_undefined ;
+ // table[(T_undefined<<4)+T_boolean] = T_undefined ;
+ // table[(T_undefined<<4)+T_char] = T_undefined ;
+ // table[(T_undefined<<4)+T_int] = T_undefined ;
+ // table[(T_undefined<<4)+T_null] = T_undefined ;
+
+ // table[(T_byte<<4)+T_undefined] = T_undefined ;
+ // table[(T_byte<<4)+T_byte] = T_undefined ;
+ // table[(T_byte<<4)+T_long] = T_undefined ;
+ // table[(T_byte<<4)+T_short] = T_undefined ;
+ // table[(T_byte<<4)+T_void] = T_undefined ;
+ // table[(T_byte<<4)+T_String] = T_undefined ;
+ // table[(T_byte<<4)+T_Object] = T_undefined ;
+ // table[(T_byte<<4)+T_double] = T_undefined ;
+ // table[(T_byte<<4)+T_float] = T_undefined ;
+ // table[(T_byte<<4)+T_boolean] = T_undefined ;
+ // table[(T_byte<<4)+T_char] = T_undefined ;
+ // table[(T_byte<<4)+T_int] = T_undefined ;
+ // table[(T_byte<<4)+T_null] = T_undefined ;
+
+ // table[(T_long<<4)+T_undefined] = T_undefined ;
+ // table[(T_long<<4)+T_byte] = T_undefined;
+ // table[(T_long<<4)+T_long] = T_undefined ;
+ // table[(T_long<<4)+T_short] = T_undefined ;
+ // table[(T_long<<4)+T_void] = T_undefined ;
+ // table[(T_long<<4)+T_String] = T_undefined ;
+ // table[(T_long<<4)+T_Object] = T_undefined ;
+ // table[(T_long<<4)+T_double] = T_undefined ;
+ // table[(T_long<<4)+T_float] = T_undefined ;
+ // table[(T_long<<4)+T_boolean] = T_undefined ;
+ // table[(T_long<<4)+T_char] = T_undefined ;
+ // table[(T_long<<4)+T_int] = T_undefined ;
+ // table[(T_long<<4)+T_null] = T_undefined ;
+
+ // table[(T_short<<4)+T_undefined] = T_undefined ;
+ // table[(T_short<<4)+T_byte] = T_undefined ;
+ // table[(T_short<<4)+T_long] = T_undefined ;
+ // table[(T_short<<4)+T_short] = T_undefined ;
+ // table[(T_short<<4)+T_void] = T_undefined ;
+ // table[(T_short<<4)+T_String] = T_undefined ;
+ // table[(T_short<<4)+T_Object] = T_undefined ;
+ // table[(T_short<<4)+T_double] = T_undefined ;
+ // table[(T_short<<4)+T_float] = T_undefined ;
+ // table[(T_short<<4)+T_boolean] = T_undefined ;
+ // table[(T_short<<4)+T_char] = T_undefined ;
+ // table[(T_short<<4)+T_int] = T_undefined ;
+ // table[(T_short<<4)+T_null] = T_undefined ;
+
+ // table[(T_void<<4)+T_undefined] = T_undefined ;
+ // table[(T_void<<4)+T_byte] = T_undefined ;
+ // table[(T_void<<4)+T_long] = T_undefined ;
+ // table[(T_void<<4)+T_short] = T_undefined ;
+ // table[(T_void<<4)+T_void] = T_undefined ;
+ // table[(T_void<<4)+T_String] = T_undefined ;
+ // table[(T_void<<4)+T_Object] = T_undefined ;
+ // table[(T_void<<4)+T_double] = T_undefined ;
+ // table[(T_void<<4)+T_float] = T_undefined ;
+ // table[(T_void<<4)+T_boolean] = T_undefined ;
+ // table[(T_void<<4)+T_char] = T_undefined ;
+ // table[(T_void<<4)+T_int] = T_undefined ;
+ // table[(T_void<<4)+T_null] = T_undefined ;
+
+ // table[(T_String<<4)+T_undefined] = T_undefined ;
+ // table[(T_String<<4)+T_byte] = T_undefined ;
+ // table[(T_String<<4)+T_long] = T_undefined ;
+ // table[(T_String<<4)+T_short] = T_undefined ;
+ // table[(T_String<<4)+T_void] = T_undefined ;
+ // table[(T_String<<4)+T_String] = T_undefined ;
+ // table[(T_String<<4)+T_Object] = T_undefined ;
+ // table[(T_String<<4)+T_double] = T_undefined ;
+ // table[(T_String<<4)+T_float] = T_undefined ;
+ // table[(T_String<<4)+T_boolean] = T_undefined ;
+ // table[(T_String<<4)+T_char] = T_undefined ;
+ // table[(T_String<<4)+T_int] = T_undefined ;
+ // table[(T_String<<4)+T_null] = T_undefined ;
+
+ // table[(T_Object<<4)+T_undefined] = T_undefined ;
+ // table[(T_Object<<4)+T_byte] = T_undefined ;
+ // table[(T_Object<<4)+T_long] = T_undefined ;
+ // table[(T_Object<<4)+T_short] = T_undefined ;
+ // table[(T_Object<<4)+T_void] = T_undefined ;
+ // table[(T_Object<<4)+T_String] = T_undefined ;
+ // table[(T_Object<<4)+T_Object] = T_undefined ;
+ // table[(T_Object<<4)+T_double] = T_undefined ;
+ // table[(T_Object<<4)+T_float] = T_undefined ;
+ // table[(T_Object<<4)+T_boolean] = T_undefined ;
+ // table[(T_Object<<4)+T_char] = T_undefined ;
+ // table[(T_Object<<4)+T_int] = T_undefined ;
+ // table[(T_Object<<4)+T_null] = T_undefined ;
+
+ // table[(T_double<<4)+T_undefined] = T_undefined ;
+ // table[(T_double<<4)+T_byte] = T_undefined ;
+ // table[(T_double<<4)+T_long] = T_undefined ;
+ // table[(T_double<<4)+T_short] = T_undefined ;
+ // table[(T_double<<4)+T_void] = T_undefined ;
+ // table[(T_double<<4)+T_String] = T_undefined ;
+ // table[(T_double<<4)+T_Object] = T_undefined ;
+ // table[(T_double<<4)+T_double] = T_undefined ;
+ // table[(T_double<<4)+T_float] = T_undefined ;
+ // table[(T_double<<4)+T_boolean] = T_undefined ;
+ // table[(T_double<<4)+T_char] = T_undefined ;
+ // table[(T_double<<4)+T_int] = T_undefined;
+ // table[(T_double<<4)+T_null] = T_undefined ;
+
+ // table[(T_float<<4)+T_undefined] = T_undefined ;
+ // table[(T_float<<4)+T_byte] = T_undefined ;
+ // table[(T_float<<4)+T_long] = T_undefined ;
+ // table[(T_float<<4)+T_short] = T_undefined ;
+ // table[(T_float<<4)+T_void] = T_undefined ;
+ // table[(T_float<<4)+T_String] = T_undefined ;
+ // table[(T_float<<4)+T_Object] = T_undefined ;
+ // table[(T_float<<4)+T_double] = T_undefined ;
+ // table[(T_float<<4)+T_float] = T_undefined ;
+ // table[(T_float<<4)+T_boolean] = T_undefined ;
+ // table[(T_float<<4)+T_char] = T_undefined ;
+ // table[(T_float<<4)+T_int] = T_undefined ;
+ // table[(T_float<<4)+T_null] = T_undefined ;
+
+ // table[(T_boolean<<4)+T_undefined] = T_undefined ;
+ // table[(T_boolean<<4)+T_byte] = T_undefined ;
+ // table[(T_boolean<<4)+T_long] = T_undefined ;
+ // table[(T_boolean<<4)+T_short] = T_undefined ;
+ // table[(T_boolean<<4)+T_void] = T_undefined ;
+ // table[(T_boolean<<4)+T_String] = T_undefined ;
+ // table[(T_boolean<<4)+T_Object] = T_undefined ;
+ // table[(T_boolean<<4)+T_double] = T_undefined ;
+ // table[(T_boolean<<4)+T_float] = T_undefined ;
+ table[(T_boolean << 4) + T_boolean] = (Boolean2Boolean << 12)
+ + (Boolean2Boolean << 4) + T_boolean;
+ // table[(T_boolean<<4)+T_char] = T_undefined ;
+ // table[(T_boolean<<4)+T_int] = T_undefined ;
+ // table[(T_boolean<<4)+T_null] = T_undefined ;
+
+ // table[(T_char<<4)+T_undefined] = T_undefined ;
+ // table[(T_char<<4)+T_byte] = T_undefined ;
+ // table[(T_char<<4)+T_long] = T_undefined;
+ // table[(T_char<<4)+T_short] = T_undefined ;
+ // table[(T_char<<4)+T_void] = T_undefined ;
+ // table[(T_char<<4)+T_String] = T_undefined ;
+ // table[(T_char<<4)+T_Object] = T_undefined ;
+ // table[(T_char<<4)+T_double] = T_undefined ;
+ // table[(T_char<<4)+T_float] = T_undefined ;
+ // table[(T_char<<4)+T_boolean] = T_undefined ;
+ // table[(T_char<<4)+T_char] = T_undefined ;
+ // table[(T_char<<4)+T_int] = T_undefined ;
+ // table[(T_char<<4)+T_null] = T_undefined ;
+
+ // table[(T_int<<4)+T_undefined] = T_undefined ;
+ // table[(T_int<<4)+T_byte] = T_undefined ;
+ // table[(T_int<<4)+T_long] = T_undefined ;
+ // table[(T_int<<4)+T_short] = T_undefined ;
+ // table[(T_int<<4)+T_void] = T_undefined ;
+ // table[(T_int<<4)+T_String] = T_undefined ;
+ // table[(T_int<<4)+T_Object] = T_undefined ;
+ // table[(T_int<<4)+T_double] = T_undefined ;
+ // table[(T_int<<4)+T_float] = T_undefined ;
+ // table[(T_int<<4)+T_boolean] = T_undefined ;
+ // table[(T_int<<4)+T_char] = T_undefined ;
+ // table[(T_int<<4)+T_int] = T_undefined ;
+ // table[(T_int<<4)+T_null] = T_undefined ;
+
+ // table[(T_null<<4)+T_undefined] = T_undefined ;
+ // table[(T_null<<4)+T_byte] = T_undefined ;
+ // table[(T_null<<4)+T_long] = T_undefined ;
+ // table[(T_null<<4)+T_short] = T_undefined ;
+ // table[(T_null<<4)+T_void] = T_undefined ;
+ // table[(T_null<<4)+T_String] = T_undefined ;
+ // table[(T_null<<4)+T_Object] = T_undefined ;
+ // table[(T_null<<4)+T_double] = T_undefined ;
+ // table[(T_null<<4)+T_float] = T_undefined ;
+ // table[(T_null<<4)+T_boolean] = T_undefined ;
+ // table[(T_null<<4)+T_char] = T_undefined ;
+ // table[(T_null<<4)+T_int] = T_undefined ;
+ // table[(T_null<<4)+T_null] = T_undefined ;
+ return table;
+ }
+
+ public static final int[] get_DIVIDE() {
+
+ // the code is an int
+ // (cast) left Op (cast) rigth --> result
+ // 0000 0000 0000 0000 0000
+ // <<16 <<12 <<8 <<4
+
+ // int[] table = new int[16*16] ;
+
+ return get_MINUS();
+ }
+
+ public static final int[] get_EQUAL_EQUAL() {
+
+ // the code is an int
+ // (cast) left Op (cast) rigth --> result
+ // 0000 0000 0000 0000 0000
+ // <<16 <<12 <<8 <<4
+
+ int[] table = new int[16 * 16];
+
+ // table[(T_undefined<<4)+T_undefined] = T_undefined ;
+ // table[(T_undefined<<4)+T_byte] = T_undefined ;
+ // table[(T_undefined<<4)+T_long] = T_undefined ;
+ // table[(T_undefined<<4)+T_short] = T_undefined ;
+ // table[(T_undefined<<4)+T_void] = T_undefined ;
+ // table[(T_undefined<<4)+T_String] = T_undefined ;
+ // table[(T_undefined<<4)+T_Object] = T_undefined ;
+ // table[(T_undefined<<4)+T_double] = T_undefined ;
+ // table[(T_undefined<<4)+T_float] = T_undefined ;
+ // table[(T_undefined<<4)+T_boolean] = T_undefined ;
+ // table[(T_undefined<<4)+T_char] = T_undefined ;
+ // table[(T_undefined<<4)+T_int] = T_undefined ;
+ // table[(T_undefined<<4)+T_null] = T_undefined ;
+
+ // table[(T_byte<<4)+T_undefined] = T_undefined ;
+ table[(T_byte << 4) + T_byte] = (Byte2Int << 12) + (Byte2Int << 4)
+ + T_boolean;
+ table[(T_byte << 4) + T_long] = (Byte2Long << 12) + (Long2Long << 4)
+ + T_boolean;
+ table[(T_byte << 4) + T_short] = (Byte2Int << 12) + (Short2Int << 4)
+ + T_boolean;
+ // table[(T_byte<<4)+T_void] = T_undefined ;
+ // table[(T_byte<<4)+T_String] = T_undefined ;
+ // table[(T_byte<<4)+T_Object] = T_undefined ;
+ table[(T_byte << 4) + T_double] = (Byte2Double << 12)
+ + (Double2Double << 4) + T_boolean;
+ table[(T_byte << 4) + T_float] = (Byte2Float << 12)
+ + (Float2Float << 4) + T_boolean;
+ // table[(T_byte<<4)+T_boolean] = T_undefined ;
+ table[(T_byte << 4) + T_char] = (Byte2Int << 12) + (Char2Int << 4)
+ + T_boolean;
+ table[(T_byte << 4) + T_int] = (Byte2Int << 12) + (Int2Int << 4)
+ + T_boolean;
+ // table[(T_byte<<4)+T_null] = T_undefined ;
+
+ // table[(T_long<<4)+T_undefined] = T_undefined ;
+ table[(T_long << 4) + T_byte] = (Long2Long << 12) + (Byte2Long << 4)
+ + T_boolean;
+ table[(T_long << 4) + T_long] = (Long2Long << 12) + (Long2Long << 4)
+ + T_boolean;
+ table[(T_long << 4) + T_short] = (Long2Long << 12) + (Short2Long << 4)
+ + T_boolean;
+ // table[(T_long<<4)+T_void] = T_undefined ;
+ // table[(T_long<<4)+T_String] = T_undefined ;
+ // table[(T_long<<4)+T_Object] = T_undefined ;
+ table[(T_long << 4) + T_double] = (Long2Double << 12)
+ + (Double2Double << 4) + T_boolean;
+ table[(T_long << 4) + T_float] = (Long2Float << 12)
+ + (Float2Float << 4) + T_boolean;
+ // table[(T_long<<4)+T_boolean] = T_undefined ;
+ table[(T_long << 4) + T_char] = (Long2Long << 12) + (Char2Long << 4)
+ + T_boolean;
+ table[(T_long << 4) + T_int] = (Long2Long << 12) + (Int2Long << 4)
+ + T_boolean;
+ // table[(T_long<<4)+T_null] = T_undefined ;
+
+ // table[(T_short<<4)+T_undefined] = T_undefined ;
+ table[(T_short << 4) + T_byte] = (Short2Int << 12) + (Byte2Int << 4)
+ + T_boolean;
+ table[(T_short << 4) + T_long] = (Short2Long << 12) + (Long2Long << 4)
+ + T_boolean;
+ table[(T_short << 4) + T_short] = (Short2Int << 12) + (Short2Int << 4)
+ + T_boolean;
+ // table[(T_short<<4)+T_void] = T_undefined ;
+ // table[(T_short<<4)+T_String] = T_undefined ;
+ // table[(T_short<<4)+T_Object] = T_undefined ;
+ table[(T_short << 4) + T_double] = (Short2Double << 12)
+ + (Double2Double << 4) + T_boolean;
+ table[(T_short << 4) + T_float] = (Short2Float << 12)
+ + (Float2Float << 4) + T_boolean;
+ // table[(T_short<<4)+T_boolean] = T_undefined ;
+ table[(T_short << 4) + T_char] = (Short2Int << 12) + (Char2Int << 4)
+ + T_boolean;
+ table[(T_short << 4) + T_int] = (Short2Int << 12) + (Int2Int << 4)
+ + T_boolean;
+ // table[(T_short<<4)+T_null] = T_undefined ;
+
+ // table[(T_void<<4)+T_undefined] = T_undefined ;
+ // table[(T_void<<4)+T_byte] = T_undefined ;
+ // table[(T_void<<4)+T_long] = T_undefined ;
+ // table[(T_void<<4)+T_short] = T_undefined ;
+ // table[(T_void<<4)+T_void] = T_undefined ;
+ // table[(T_void<<4)+T_String] = T_undefined ;
+ // table[(T_void<<4)+T_Object] = T_undefined ;
+ // table[(T_void<<4)+T_double] = T_undefined ;
+ // table[(T_void<<4)+T_float] = T_undefined ;
+ // table[(T_void<<4)+T_boolean] = T_undefined ;
+ // table[(T_void<<4)+T_char] = T_undefined ;
+ // table[(T_void<<4)+T_int] = T_undefined ;
+ // table[(T_void<<4)+T_null] = T_undefined ;
+
+ // table[(T_String<<4)+T_undefined] = T_undefined ;
+ // table[(T_String<<4)+T_byte] = T_undefined ;
+ // table[(T_String<<4)+T_long] = T_undefined ;
+ // table[(T_String<<4)+T_short] = T_undefined ;
+ // table[(T_String<<4)+T_void] = T_undefined ;
+ table[(T_String << 4) + T_String] = /* String2Object String2Object */
+ (T_Object << 16) + (T_String << 12) + (T_Object << 8) + (T_String << 4)
+ + T_boolean;
+ table[(T_String << 4) + T_Object] = /* String2Object Object2Object */
+ (T_Object << 16) + (T_String << 12) + (T_Object << 8) + (T_Object << 4)
+ + T_boolean;
+ // table[(T_String<<4)+T_double] = T_undefined ;
+ // table[(T_String<<4)+T_float] = T_undefined ;
+ // table[(T_String<<4)+T_boolean] = T_undefined ;
+ // table[(T_String<<4)+T_char] = T_undefined ;
+ // table[(T_String<<4)+T_int] = T_undefined ;
+ table[(T_String << 4) + T_null] = /* Object2String null2Object */
+ (T_Object << 16) + (T_String << 12) + (T_Object << 8) + (T_null << 4)
+ + T_boolean;
+
+ // table[(T_Object<<4)+T_undefined] = T_undefined ;
+ // table[(T_Object<<4)+T_byte] = T_undefined ;
+ // table[(T_Object<<4)+T_long] = T_undefined ;
+ // table[(T_Object<<4)+T_short] = T_undefined ;
+ // table[(T_Object<<4)+T_void] = T_undefined ;
+ table[(T_Object << 4) + T_String] = /* Object2Object String2Object */
+ (T_Object << 16) + (T_Object << 12) + (T_Object << 8) + (T_String << 4)
+ + T_boolean;
+ table[(T_Object << 4) + T_Object] = /* Object2Object Object2Object */
+ (T_Object << 16) + (T_Object << 12) + (T_Object << 8) + (T_Object << 4)
+ + T_boolean;
+ // table[(T_Object<<4)+T_double] = T_undefined ;
+ // table[(T_Object<<4)+T_float] = T_undefined ;
+ // table[(T_Object<<4)+T_boolean] = T_undefined ;
+ // table[(T_Object<<4)+T_char] = T_undefined ;
+ // table[(T_Object<<4)+T_int] = T_undefined ;
+ table[(T_Object << 4) + T_null] = /* Object2Object null2Object */
+ (T_Object << 16) + (T_Object << 12) + (T_Object << 8) + (T_null << 4)
+ + T_boolean;
+
+ // table[(T_double<<4)+T_undefined] = T_undefined ;
+ table[(T_double << 4) + T_byte] = (Double2Double << 12)
+ + (Byte2Double << 4) + T_boolean;
+ table[(T_double << 4) + T_long] = (Double2Double << 12)
+ + (Long2Double << 4) + T_boolean;
+ table[(T_double << 4) + T_short] = (Double2Double << 12)
+ + (Short2Double << 4) + T_boolean;
+ // table[(T_double<<4)+T_void] = T_undefined ;
+ // table[(T_double<<4)+T_String] = T_undefined ;
+ // table[(T_double<<4)+T_Object] = T_undefined ;
+ table[(T_double << 4) + T_double] = (Double2Double << 12)
+ + (Double2Double << 4) + T_boolean;
+ table[(T_double << 4) + T_float] = (Double2Double << 12)
+ + (Float2Double << 4) + T_boolean;
+ // table[(T_double<<4)+T_boolean] = T_undefined ;
+ table[(T_double << 4) + T_char] = (Double2Double << 12)
+ + (Char2Double << 4) + T_boolean;
+ table[(T_double << 4) + T_int] = (Double2Double << 12)
+ + (Int2Double << 4) + T_boolean;
+ // table[(T_double<<4)+T_null] = T_undefined ;
+
+ // table[(T_float<<4)+T_undefined] = T_undefined ;
+ table[(T_float << 4) + T_byte] = (Float2Float << 12)
+ + (Byte2Float << 4) + T_boolean;
+ table[(T_float << 4) + T_long] = (Float2Float << 12)
+ + (Long2Float << 4) + T_boolean;
+ table[(T_float << 4) + T_short] = (Float2Float << 12)
+ + (Short2Float << 4) + T_boolean;
+ // table[(T_float<<4)+T_void] = T_undefined ;
+ // table[(T_float<<4)+T_String] = T_undefined ;
+ // table[(T_float<<4)+T_Object] = T_undefined ;
+ table[(T_float << 4) + T_double] = (Float2Double << 12)
+ + (Double2Double << 4) + T_boolean;
+ table[(T_float << 4) + T_float] = (Float2Float << 12)
+ + (Float2Float << 4) + T_boolean;
+ // table[(T_float<<4)+T_boolean] = T_undefined ;
+ table[(T_float << 4) + T_char] = (Float2Float << 12)
+ + (Char2Float << 4) + T_boolean;
+ table[(T_float << 4) + T_int] = (Float2Float << 12) + (Int2Float << 4)
+ + T_boolean;
+ // table[(T_float<<4)+T_null] = T_undefined ;
+
+ // table[(T_boolean<<4)+T_undefined] = T_undefined ;
+ // table[(T_boolean<<4)+T_byte] = T_undefined ;
+ // table[(T_boolean<<4)+T_long] = T_undefined ;
+ // table[(T_boolean<<4)+T_short] = T_undefined ;
+ // table[(T_boolean<<4)+T_void] = T_undefined ;
+ // table[(T_boolean<<4)+T_String] = T_undefined ;
+ // table[(T_boolean<<4)+T_Object] = T_undefined ;
+ // table[(T_boolean<<4)+T_double] = T_undefined ;
+ // table[(T_boolean<<4)+T_float] = T_undefined ;
+ table[(T_boolean << 4) + T_boolean] = (Boolean2Boolean << 12)
+ + (Boolean2Boolean << 4) + T_boolean;
+ // table[(T_boolean<<4)+T_char] = T_undefined ;
+ // table[(T_boolean<<4)+T_int] = T_undefined ;
+ // table[(T_boolean<<4)+T_null] = T_undefined ;
+
+ // table[(T_char<<4)+T_undefined] = T_undefined ;
+ table[(T_char << 4) + T_byte] = (Char2Int << 12) + (Byte2Int << 4)
+ + T_boolean;
+ table[(T_char << 4) + T_long] = (Char2Long << 12) + (Long2Long << 4)
+ + T_boolean;
+ table[(T_char << 4) + T_short] = (Char2Int << 12) + (Short2Int << 4)
+ + T_boolean;
+ // table[(T_char<<4)+T_void] = T_undefined ;
+ // table[(T_char<<4)+T_String] = T_undefined ;
+ // table[(T_char<<4)+T_Object] = T_undefined ;
+ table[(T_char << 4) + T_double] = (Char2Double << 12)
+ + (Double2Double << 4) + T_boolean;
+ table[(T_char << 4) + T_float] = (Char2Float << 12)
+ + (Float2Float << 4) + T_boolean;
+ // table[(T_char<<4)+T_boolean] = T_undefined ;
+ table[(T_char << 4) + T_char] = (Char2Int << 12) + (Char2Int << 4)
+ + T_boolean;
+ table[(T_char << 4) + T_int] = (Char2Int << 12) + (Int2Int << 4)
+ + T_boolean;
+ // table[(T_char<<4)+T_null] = T_undefined ;
+
+ // table[(T_int<<4)+T_undefined] = T_undefined ;
+ table[(T_int << 4) + T_byte] = (Int2Int << 12) + (Byte2Int << 4)
+ + T_boolean;
+ table[(T_int << 4) + T_long] = (Int2Long << 12) + (Long2Long << 4)
+ + T_boolean;
+ table[(T_int << 4) + T_short] = (Int2Int << 12) + (Short2Int << 4)
+ + T_boolean;
+ // table[(T_int<<4)+T_void] = T_undefined ;
+ // table[(T_int<<4)+T_String] = T_undefined ;
+ // table[(T_int<<4)+T_Object] = T_undefined ;
+ table[(T_int << 4) + T_double] = (Int2Double << 12)
+ + (Double2Double << 4) + T_boolean;
+ table[(T_int << 4) + T_float] = (Int2Float << 12) + (Float2Float << 4)
+ + T_boolean;
+ // table[(T_int<<4)+T_boolean] = T_undefined ;
+ table[(T_int << 4) + T_char] = (Int2Int << 12) + (Char2Int << 4)
+ + T_boolean;
+ table[(T_int << 4) + T_int] = (Int2Int << 12) + (Int2Int << 4)
+ + T_boolean;
+ // table[(T_int<<4)+T_null] = T_undefined ;
+
+ // table[(T_null<<4)+T_undefined] = T_undefined ;
+ // table[(T_null<<4)+T_byte] = T_undefined ;
+ // table[(T_null<<4)+T_long] = T_undefined ;
+ // table[(T_null<<4)+T_short] = T_undefined ;
+ // table[(T_null<<4)+T_void] = T_undefined ;
+ table[(T_null << 4) + T_String] = /* null2Object String2Object */
+ (T_Object << 16) + (T_null << 12) + (T_Object << 8) + (T_String << 4)
+ + T_boolean;
+ table[(T_null << 4) + T_Object] = /* null2Object Object2Object */
+ (T_Object << 16) + (T_null << 12) + (T_Object << 8) + (T_Object << 4)
+ + T_boolean;
+ ;
+ // table[(T_null<<4)+T_double] = T_undefined ;
+ // table[(T_null<<4)+T_float] = T_undefined ;
+ // table[(T_null<<4)+T_boolean] = T_undefined ;
+ // table[(T_null<<4)+T_char] = T_undefined ;
+ // table[(T_null<<4)+T_int] = T_undefined ;
+ table[(T_null << 4) + T_null] = /* null2Object null2Object */
+ (T_Object << 16) + (T_null << 12) + (T_Object << 8) + (T_null << 4)
+ + T_boolean;
+ return table;
+ }
+
+ public static final int[] get_GREATER() {
+
+ // the code is an int
+ // (cast) left Op (cast) rigth --> result
+ // 0000 0000 0000 0000 0000
+ // <<16 <<12 <<8 <<4
+
+ // int[] table = new int[16*16] ;
+ return get_LESS();
+ }
+
+ public static final int[] get_GREATER_EQUAL() {
+
+ // the code is an int
+ // (cast) left Op (cast) rigth --> result
+ // 0000 0000 0000 0000 0000
+ // <<16 <<12 <<8 <<4
+
+ // int[] table = new int[16*16] ;
+ return get_LESS();
+ }
+
+ public static final int[] get_LEFT_SHIFT() {
+
+ // the code is an int
+ // (cast) left Op (cast) rigth --> result
+ // 0000 0000 0000 0000 0000
+ // <<16 <<12 <<8 <<4
+
+ int[] table = new int[16 * 16];
+
+ // table[(T_undefined<<4)+T_undefined] = T_undefined ;
+ // table[(T_undefined<<4)+T_byte] = T_undefined ;
+ // table[(T_undefined<<4)+T_long] = T_undefined ;
+ // table[(T_undefined<<4)+T_short] = T_undefined ;
+ // table[(T_undefined<<4)+T_void] = T_undefined ;
+ // table[(T_undefined<<4)+T_String] = T_undefined ;
+ // table[(T_undefined<<4)+T_Object] = T_undefined ;
+ // table[(T_undefined<<4)+T_double] = T_undefined ;
+ // table[(T_undefined<<4)+T_float] = T_undefined ;
+ // table[(T_undefined<<4)+T_boolean] = T_undefined ;
+ // table[(T_undefined<<4)+T_char] = T_undefined ;
+ // table[(T_undefined<<4)+T_int] = T_undefined ;
+ // table[(T_undefined<<4)+T_null] = T_undefined ;
+
+ // table[(T_byte<<4)+T_undefined] = T_undefined ;
+ table[(T_byte << 4) + T_byte] = (Byte2Int << 12) + (Byte2Int << 4)
+ + T_int;
+ table[(T_byte << 4) + T_long] = (Byte2Int << 12) + (Long2Int << 4)
+ + T_int;
+ table[(T_byte << 4) + T_short] = (Byte2Int << 12) + (Short2Int << 4)
+ + T_int;
+ // table[(T_byte<<4)+T_void] = T_undefined ;
+ // table[(T_byte<<4)+T_String] = T_undefined ;
+ // table[(T_byte<<4)+T_Object] = T_undefined ;
+ // table[(T_byte<<4)+T_double] = T_undefined ;
+ // table[(T_byte<<4)+T_float] = T_undefined ;
+ // table[(T_byte<<4)+T_boolean] = T_undefined ;
+ table[(T_byte << 4) + T_char] = (Byte2Int << 12) + (Char2Int << 4)
+ + T_int;
+ table[(T_byte << 4) + T_int] = (Byte2Int << 12) + (Int2Int << 4)
+ + T_int;
+ // table[(T_byte<<4)+T_null] = T_undefined ;
+
+ // table[(T_long<<4)+T_undefined] = T_undefined ;
+ table[(T_long << 4) + T_byte] = (Long2Long << 12) + (Byte2Int << 4)
+ + T_long;
+ table[(T_long << 4) + T_long] = (Long2Long << 12) + (Long2Int << 4)
+ + T_long;
+ table[(T_long << 4) + T_short] = (Long2Long << 12) + (Short2Int << 4)
+ + T_long;
+ // table[(T_long<<4)+T_void] = T_undefined ;
+ // table[(T_long<<4)+T_String] = T_undefined ;
+ // table[(T_long<<4)+T_Object] = T_undefined ;
+ // table[(T_long<<4)+T_double] = T_undefined ;
+ // table[(T_long<<4)+T_float] = T_undefined ;
+ // table[(T_long<<4)+T_boolean] = T_undefined ;
+ table[(T_long << 4) + T_char] = (Long2Long << 12) + (Char2Int << 4)
+ + T_long;
+ table[(T_long << 4) + T_int] = (Long2Long << 12) + (Int2Int << 4)
+ + T_long;
+ // table[(T_long<<4)+T_null] = T_undefined ;
+
+ // table[(T_short<<4)+T_undefined] = T_undefined ;
+ table[(T_short << 4) + T_byte] = (Short2Int << 12) + (Byte2Int << 4)
+ + T_int;
+ table[(T_short << 4) + T_long] = (Short2Int << 12) + (Long2Int << 4)
+ + T_int;
+ table[(T_short << 4) + T_short] = (Short2Int << 12) + (Short2Int << 4)
+ + T_int;
+ // table[(T_short<<4)+T_void] = T_undefined ;
+ // table[(T_short<<4)+T_String] = T_undefined ;
+ // table[(T_short<<4)+T_Object] = T_undefined ;
+ // table[(T_short<<4)+T_double] = T_undefined ;
+ // table[(T_short<<4)+T_float] = T_undefined ;
+ // table[(T_short<<4)+T_boolean] = T_undefined ;
+ table[(T_short << 4) + T_char] = (Short2Int << 12) + (Char2Int << 4)
+ + T_int;
+ table[(T_short << 4) + T_int] = (Short2Int << 12) + (Int2Int << 4)
+ + T_int;
+ // table[(T_short<<4)+T_null] = T_undefined ;
+
+ // table[(T_void<<4)+T_undefined] = T_undefined ;
+ // table[(T_void<<4)+T_byte] = T_undefined ;
+ // table[(T_void<<4)+T_long] = T_undefined ;
+ // table[(T_void<<4)+T_short] = T_undefined ;
+ // table[(T_void<<4)+T_void] = T_undefined ;
+ // table[(T_void<<4)+T_String] = T_undefined ;
+ // table[(T_void<<4)+T_Object] = T_undefined ;
+ // table[(T_void<<4)+T_double] = T_undefined ;
+ // table[(T_void<<4)+T_float] = T_undefined ;
+ // table[(T_void<<4)+T_boolean] = T_undefined ;
+ // table[(T_void<<4)+T_char] = T_undefined ;
+ // table[(T_void<<4)+T_int] = T_undefined ;
+ // table[(T_void<<4)+T_null] = T_undefined ;
+
+ // table[(T_String<<4)+T_undefined] = T_undefined ;
+ // table[(T_String<<4)+T_byte] = T_undefined ;
+ // table[(T_String<<4)+T_long] = T_undefined ;
+ // table[(T_String<<4)+T_short] = T_undefined ;
+ // table[(T_String<<4)+T_void] = T_undefined ;
+ // table[(T_String<<4)+T_String] = T_undefined ;
+ // table[(T_String<<4)+T_Object] = T_undefined ;
+ // table[(T_String<<4)+T_double] = T_undefined ;
+ // table[(T_String<<4)+T_float] = T_undefined ;
+ // table[(T_String<<4)+T_boolean] = T_undefined ;
+ // table[(T_String<<4)+T_char] = T_undefined ;
+ // table[(T_String<<4)+T_int] = T_undefined ;
+ // table[(T_String<<4)+T_null] = T_undefined ;
+
+ // table[(T_Object<<4)+T_undefined] = T_undefined ;
+ // table[(T_Object<<4)+T_byte] = T_undefined ;
+ // table[(T_Object<<4)+T_long] = T_undefined ;
+ // table[(T_Object<<4)+T_short] = T_undefined ;
+ // table[(T_Object<<4)+T_void] = T_undefined ;
+ // table[(T_Object<<4)+T_String] = T_undefined ;
+ // table[(T_Object<<4)+T_Object] = T_undefined ;
+ // table[(T_Object<<4)+T_double] = T_undefined ;
+ // table[(T_Object<<4)+T_float] = T_undefined ;
+ // table[(T_Object<<4)+T_boolean] = T_undefined ;
+ // table[(T_Object<<4)+T_char] = T_undefined ;
+ // table[(T_Object<<4)+T_int] = T_undefined ;
+ // table[(T_Object<<4)+T_null] = T_undefined ;
+
+ // table[(T_double<<4)+T_undefined] = T_undefined ;
+ // table[(T_double<<4)+T_byte] = T_undefined ;
+ // table[(T_double<<4)+T_long] = T_undefined ;
+ // table[(T_double<<4)+T_short] = T_undefined ;
+ // table[(T_double<<4)+T_void] = T_undefined ;
+ // table[(T_double<<4)+T_String] = T_undefined ;
+ // table[(T_double<<4)+T_Object] = T_undefined ;
+ // table[(T_double<<4)+T_double] = T_undefined ;
+ // table[(T_double<<4)+T_float] = T_undefined ;
+ // table[(T_double<<4)+T_boolean] = T_undefined ;
+ // table[(T_double<<4)+T_char] = T_undefined ;
+ // table[(T_double<<4)+T_int] = T_undefined;
+ // table[(T_double<<4)+T_null] = T_undefined ;
+
+ // table[(T_float<<4)+T_undefined] = T_undefined ;
+ // table[(T_float<<4)+T_byte] = T_undefined ;
+ // table[(T_float<<4)+T_long] = T_undefined ;
+ // table[(T_float<<4)+T_short] = T_undefined ;
+ // table[(T_float<<4)+T_void] = T_undefined ;
+ // table[(T_float<<4)+T_String] = T_undefined ;
+ // table[(T_float<<4)+T_Object] = T_undefined ;
+ // table[(T_float<<4)+T_double] = T_undefined ;
+ // table[(T_float<<4)+T_float] = T_undefined ;
+ // table[(T_float<<4)+T_boolean] = T_undefined ;
+ // table[(T_float<<4)+T_char] = T_undefined ;
+ // table[(T_float<<4)+T_int] = T_undefined ;
+ // table[(T_float<<4)+T_null] = T_undefined ;
+
+ // table[(T_boolean<<4)+T_undefined] = T_undefined ;
+ // table[(T_boolean<<4)+T_byte] = T_undefined ;
+ // table[(T_boolean<<4)+T_long] = T_undefined ;
+ // table[(T_boolean<<4)+T_short] = T_undefined ;
+ // table[(T_boolean<<4)+T_void] = T_undefined ;
+ // table[(T_boolean<<4)+T_String] = T_undefined ;
+ // table[(T_boolean<<4)+T_Object] = T_undefined ;
+ // table[(T_boolean<<4)+T_double] = T_undefined ;
+ // table[(T_boolean<<4)+T_float] = T_undefined ;
+ // table[(T_boolean<<4)+T_boolean] = T_undefined ;
+ // table[(T_boolean<<4)+T_char] = T_undefined ;
+ // table[(T_boolean<<4)+T_int] = T_undefined ;
+ // table[(T_boolean<<4)+T_null] = T_undefined ;
+
+ // table[(T_char<<4)+T_undefined] = T_undefined ;
+ table[(T_char << 4) + T_byte] = (Char2Int << 12) + (Byte2Int << 4)
+ + T_int;
+ table[(T_char << 4) + T_long] = (Char2Int << 12) + (Long2Int << 4)
+ + T_int;
+ table[(T_char << 4) + T_short] = (Char2Int << 12) + (Short2Int << 4)
+ + T_int;
+ // table[(T_char<<4)+T_void] = T_undefined ;
+ // table[(T_char<<4)+T_String] = T_undefined ;
+ // table[(T_char<<4)+T_Object] = T_undefined ;
+ // table[(T_char<<4)+T_double] = T_undefined ;
+ // table[(T_char<<4)+T_float] = T_undefined ;
+ // table[(T_char<<4)+T_boolean] = T_undefined ;
+ table[(T_char << 4) + T_char] = (Char2Int << 12) + (Char2Int << 4)
+ + T_int;
+ table[(T_char << 4) + T_int] = (Char2Int << 12) + (Int2Int << 4)
+ + T_int;
+ // table[(T_char<<4)+T_null] = T_undefined ;
+
+ // table[(T_int<<4)+T_undefined] = T_undefined ;
+ table[(T_int << 4) + T_byte] = (Int2Int << 12) + (Byte2Int << 4)
+ + T_int;
+ table[(T_int << 4) + T_long] = (Int2Int << 12) + (Long2Int << 4)
+ + T_int;
+ table[(T_int << 4) + T_short] = (Int2Int << 12) + (Short2Int << 4)
+ + T_int;
+ // table[(T_int<<4)+T_void] = T_undefined ;
+ // table[(T_int<<4)+T_String] = T_undefined ;
+ // table[(T_int<<4)+T_Object] = T_undefined ;
+ // table[(T_int<<4)+T_double] = T_undefined ;
+ // table[(T_int<<4)+T_float] = T_undefined ;
+ // table[(T_int<<4)+T_boolean] = T_undefined ;
+ table[(T_int << 4) + T_char] = (Int2Int << 12) + (Char2Int << 4)
+ + T_int;
+ table[(T_int << 4) + T_int] = (Int2Int << 12) + (Int2Int << 4) + T_int;
+ // table[(T_int<<4)+T_null] = T_undefined ;
+
+ // table[(T_null<<4)+T_undefined] = T_undefined ;
+ // table[(T_null<<4)+T_byte] = T_undefined ;
+ // table[(T_null<<4)+T_long] = T_undefined ;
+ // table[(T_null<<4)+T_short] = T_undefined ;
+ // table[(T_null<<4)+T_void] = T_undefined ;
+ // table[(T_null<<4)+T_String] = T_undefined ;
+ // table[(T_null<<4)+T_Object] = T_undefined ;
+ // table[(T_null<<4)+T_double] = T_undefined ;
+ // table[(T_null<<4)+T_float] = T_undefined ;
+ // table[(T_null<<4)+T_boolean] = T_undefined ;
+ // table[(T_null<<4)+T_char] = T_undefined ;
+ // table[(T_null<<4)+T_int] = T_undefined ;
+ // table[(T_null<<4)+T_null] = T_undefined ;
+
+ return table;
+ }
+
+ public static final int[] get_LESS() {
+
+ // the code is an int
+ // (cast) left Op (cast) rigth --> result
+ // 0000 0000 0000 0000 0000
+ // <<16 <<12 <<8 <<4
+
+ int[] table = new int[16 * 16];
+
+ // table[(T_undefined<<4)+T_undefined] = T_undefined ;
+ // table[(T_undefined<<4)+T_byte] = T_undefined ;
+ // table[(T_undefined<<4)+T_long] = T_undefined ;
+ // table[(T_undefined<<4)+T_short] = T_undefined ;
+ // table[(T_undefined<<4)+T_void] = T_undefined ;
+ // table[(T_undefined<<4)+T_String] = T_undefined ;
+ // table[(T_undefined<<4)+T_Object] = T_undefined ;
+ // table[(T_undefined<<4)+T_double] = T_undefined ;
+ // table[(T_undefined<<4)+T_float] = T_undefined ;
+ // table[(T_undefined<<4)+T_boolean] = T_undefined ;
+ // table[(T_undefined<<4)+T_char] = T_undefined ;
+ // table[(T_undefined<<4)+T_int] = T_undefined ;
+ // table[(T_undefined<<4)+T_null] = T_undefined ;
+
+ // table[(T_byte<<4)+T_undefined] = T_undefined ;
+ table[(T_byte << 4) + T_byte] = (Byte2Int << 12) + (Byte2Int << 4)
+ + T_boolean;
+ table[(T_byte << 4) + T_long] = (Byte2Long << 12) + (Long2Long << 4)
+ + T_boolean;
+ table[(T_byte << 4) + T_short] = (Byte2Int << 12) + (Short2Int << 4)
+ + T_boolean;
+ // table[(T_byte<<4)+T_void] = T_undefined ;
+ // table[(T_byte<<4)+T_String] = T_undefined ;
+ // table[(T_byte<<4)+T_Object] = T_undefined ;
+ table[(T_byte << 4) + T_double] = (Byte2Double << 12)
+ + (Double2Double << 4) + T_boolean;
+ table[(T_byte << 4) + T_float] = (Byte2Float << 12)
+ + (Float2Float << 4) + T_boolean;
+ // table[(T_byte<<4)+T_boolean] = T_undefined ;
+ table[(T_byte << 4) + T_char] = (Byte2Int << 12) + (Char2Int << 4)
+ + T_boolean;
+ table[(T_byte << 4) + T_int] = (Byte2Int << 12) + (Int2Int << 4)
+ + T_boolean;
+ // table[(T_byte<<4)+T_null] = T_undefined ;
+
+ // table[(T_long<<4)+T_undefined] = T_undefined ;
+ table[(T_long << 4) + T_byte] = (Long2Long << 12) + (Byte2Long << 4)
+ + T_boolean;
+ table[(T_long << 4) + T_long] = (Long2Long << 12) + (Long2Long << 4)
+ + T_boolean;
+ table[(T_long << 4) + T_short] = (Long2Long << 12) + (Short2Long << 4)
+ + T_boolean;
+ // table[(T_long<<4)+T_void] = T_undefined ;
+ // table[(T_long<<4)+T_String] = T_undefined ;
+ // table[(T_long<<4)+T_Object] = T_undefined ;
+ table[(T_long << 4) + T_double] = (Long2Double << 12)
+ + (Double2Double << 4) + T_boolean;
+ table[(T_long << 4) + T_float] = (Long2Float << 12)
+ + (Float2Float << 4) + T_boolean;
+ // table[(T_long<<4)+T_boolean] = T_undefined ;
+ table[(T_long << 4) + T_char] = (Long2Long << 12) + (Char2Long << 4)
+ + T_boolean;
+ table[(T_long << 4) + T_int] = (Long2Long << 12) + (Int2Long << 4)
+ + T_boolean;
+ // table[(T_long<<4)+T_null] = T_undefined ;
+
+ // table[(T_short<<4)+T_undefined] = T_undefined ;
+ table[(T_short << 4) + T_byte] = (Short2Int << 12) + (Byte2Int << 4)
+ + T_boolean;
+ table[(T_short << 4) + T_long] = (Short2Long << 12) + (Long2Long << 4)
+ + T_boolean;
+ table[(T_short << 4) + T_short] = (Short2Int << 12) + (Short2Int << 4)
+ + T_boolean;
+ // table[(T_short<<4)+T_void] = T_undefined ;
+ // table[(T_short<<4)+T_String] = T_undefined ;
+ // table[(T_short<<4)+T_Object] = T_undefined ;
+ table[(T_short << 4) + T_double] = (Short2Double << 12)
+ + (Double2Double << 4) + T_boolean;
+ table[(T_short << 4) + T_float] = (Short2Float << 12)
+ + (Float2Float << 4) + T_boolean;
+ // table[(T_short<<4)+T_boolean] = T_undefined ;
+ table[(T_short << 4) + T_char] = (Short2Int << 12) + (Char2Int << 4)
+ + T_boolean;
+ table[(T_short << 4) + T_int] = (Short2Int << 12) + (Int2Int << 4)
+ + T_boolean;
+ // table[(T_short<<4)+T_null] = T_undefined ;
+
+ // table[(T_void<<4)+T_undefined] = T_undefined ;
+ // table[(T_void<<4)+T_byte] = T_undefined ;
+ // table[(T_void<<4)+T_long] = T_undefined ;
+ // table[(T_void<<4)+T_short] = T_undefined ;
+ // table[(T_void<<4)+T_void] = T_undefined ;
+ // table[(T_void<<4)+T_String] = T_undefined ;
+ // table[(T_void<<4)+T_Object] = T_undefined ;
+ // table[(T_void<<4)+T_double] = T_undefined ;
+ // table[(T_void<<4)+T_float] = T_undefined ;
+ // table[(T_void<<4)+T_boolean] = T_undefined ;
+ // table[(T_void<<4)+T_char] = T_undefined ;
+ // table[(T_void<<4)+T_int] = T_undefined ;
+ // table[(T_void<<4)+T_null] = T_undefined ;
+
+ // table[(T_String<<4)+T_undefined] = T_undefined ;
+ // table[(T_String<<4)+T_byte] = T_undefined ;
+ // table[(T_String<<4)+T_long] = T_undefined ;
+ // table[(T_String<<4)+T_short] = T_undefined ;
+ // table[(T_String<<4)+T_void] = T_undefined ;
+ // table[(T_String<<4)+T_String] = T_undefined ;
+ // table[(T_String<<4)+T_Object] = T_undefined ;
+ // table[(T_String<<4)+T_double] = T_undefined ;
+ // table[(T_String<<4)+T_float] = T_undefined ;
+ // table[(T_String<<4)+T_boolean] = T_undefined ;
+ // table[(T_String<<4)+T_char] = T_undefined ;
+ // table[(T_String<<4)+T_int] = T_undefined ;
+ // table[(T_String<<4)+T_null] = T_undefined ;
+
+ // table[(T_Object<<4)+T_undefined] = T_undefined ;
+ // table[(T_Object<<4)+T_byte] = T_undefined ;
+ // table[(T_Object<<4)+T_long] = T_undefined ;
+ // table[(T_Object<<4)+T_short] = T_undefined ;
+ // table[(T_Object<<4)+T_void] = T_undefined ;
+ // table[(T_Object<<4)+T_String] = T_undefined ;
+ // table[(T_Object<<4)+T_Object] = T_undefined ;
+ // table[(T_Object<<4)+T_double] = T_undefined ;
+ // table[(T_Object<<4)+T_float] = T_undefined ;
+ // table[(T_Object<<4)+T_boolean] = T_undefined ;
+ // table[(T_Object<<4)+T_char] = T_undefined ;
+ // table[(T_Object<<4)+T_int] = T_undefined ;
+ // table[(T_Object<<4)+T_null] = T_undefined ;
+
+ // table[(T_double<<4)+T_undefined] = T_undefined ;
+ table[(T_double << 4) + T_byte] = (Double2Double << 12)
+ + (Byte2Double << 4) + T_boolean;
+ table[(T_double << 4) + T_long] = (Double2Double << 12)
+ + (Long2Double << 4) + T_boolean;
+ table[(T_double << 4) + T_short] = (Double2Double << 12)
+ + (Short2Double << 4) + T_boolean;
+ // table[(T_double<<4)+T_void] = T_undefined ;
+ // table[(T_double<<4)+T_String] = T_undefined ;
+ // table[(T_double<<4)+T_Object] = T_undefined ;
+ table[(T_double << 4) + T_double] = (Double2Double << 12)
+ + (Double2Double << 4) + T_boolean;
+ table[(T_double << 4) + T_float] = (Double2Double << 12)
+ + (Float2Double << 4) + T_boolean;
+ // table[(T_double<<4)+T_boolean] = T_undefined ;
+ table[(T_double << 4) + T_char] = (Double2Double << 12)
+ + (Char2Double << 4) + T_boolean;
+ table[(T_double << 4) + T_int] = (Double2Double << 12)
+ + (Int2Double << 4) + T_boolean;
+ // table[(T_double<<4)+T_null] = T_undefined ;
+
+ // table[(T_float<<4)+T_undefined] = T_undefined ;
+ table[(T_float << 4) + T_byte] = (Float2Float << 12)
+ + (Byte2Float << 4) + T_boolean;
+ table[(T_float << 4) + T_long] = (Float2Float << 12)
+ + (Long2Float << 4) + T_boolean;
+ table[(T_float << 4) + T_short] = (Float2Float << 12)
+ + (Short2Float << 4) + T_boolean;
+ // table[(T_float<<4)+T_void] = T_undefined ;
+ // table[(T_float<<4)+T_String] = T_undefined ;
+ // table[(T_float<<4)+T_Object] = T_undefined ;
+ table[(T_float << 4) + T_double] = (Float2Double << 12)
+ + (Double2Double << 4) + T_boolean;
+ table[(T_float << 4) + T_float] = (Float2Float << 12)
+ + (Float2Float << 4) + T_boolean;
+ // table[(T_float<<4)+T_boolean] = T_undefined ;
+ table[(T_float << 4) + T_char] = (Float2Float << 12)
+ + (Char2Float << 4) + T_boolean;
+ table[(T_float << 4) + T_int] = (Float2Float << 12) + (Int2Float << 4)
+ + T_boolean;
+ // table[(T_float<<4)+T_null] = T_undefined ;
+
+ // table[(T_boolean<<4)+T_undefined] = T_undefined ;
+ // table[(T_boolean<<4)+T_byte] = T_undefined ;
+ // table[(T_boolean<<4)+T_long] = T_undefined ;
+ // table[(T_boolean<<4)+T_short] = T_undefined ;
+ // table[(T_boolean<<4)+T_void] = T_undefined ;
+ // table[(T_boolean<<4)+T_String] = T_undefined ;
+ // table[(T_boolean<<4)+T_Object] = T_undefined ;
+ // table[(T_boolean<<4)+T_double] = T_undefined ;
+ // table[(T_boolean<<4)+T_float] = T_undefined ;
+ // table[(T_boolean<<4)+T_boolean] = T_undefined ;
+ // table[(T_boolean<<4)+T_char] = T_undefined ;
+ // table[(T_boolean<<4)+T_int] = T_undefined ;
+ // table[(T_boolean<<4)+T_null] = T_undefined ;
+
+ // table[(T_char<<4)+T_undefined] = T_undefined ;
+ table[(T_char << 4) + T_byte] = (Char2Int << 12) + (Byte2Int << 4)
+ + T_boolean;
+ table[(T_char << 4) + T_long] = (Char2Long << 12) + (Long2Long << 4)
+ + T_boolean;
+ table[(T_char << 4) + T_short] = (Char2Int << 12) + (Short2Int << 4)
+ + T_boolean;
+ // table[(T_char<<4)+T_void] = T_undefined ;
+ // table[(T_char<<4)+T_String] = T_undefined ;
+ // table[(T_char<<4)+T_Object] = T_undefined ;
+ table[(T_char << 4) + T_double] = (Char2Double << 12)
+ + (Double2Double << 4) + T_boolean;
+ table[(T_char << 4) + T_float] = (Char2Float << 12)
+ + (Float2Float << 4) + T_boolean;
+ // table[(T_char<<4)+T_boolean] = T_undefined ;
+ table[(T_char << 4) + T_char] = (Char2Int << 12) + (Char2Int << 4)
+ + T_boolean;
+ table[(T_char << 4) + T_int] = (Char2Int << 12) + (Int2Int << 4)
+ + T_boolean;
+ // table[(T_char<<4)+T_null] = T_undefined ;
+
+ // table[(T_int<<4)+T_undefined] = T_undefined ;
+ table[(T_int << 4) + T_byte] = (Int2Int << 12) + (Byte2Int << 4)
+ + T_boolean;
+ table[(T_int << 4) + T_long] = (Int2Long << 12) + (Long2Long << 4)
+ + T_boolean;
+ table[(T_int << 4) + T_short] = (Int2Int << 12) + (Short2Int << 4)
+ + T_boolean;
+ // table[(T_int<<4)+T_void] = T_undefined ;
+ // table[(T_int<<4)+T_String] = T_undefined ;
+ // table[(T_int<<4)+T_Object] = T_undefined ;
+ table[(T_int << 4) + T_double] = (Int2Double << 12)
+ + (Double2Double << 4) + T_boolean;
+ table[(T_int << 4) + T_float] = (Int2Float << 12) + (Float2Float << 4)
+ + T_boolean;
+ // table[(T_int<<4)+T_boolean] = T_undefined ;
+ table[(T_int << 4) + T_char] = (Int2Int << 12) + (Char2Int << 4)
+ + T_boolean;
+ table[(T_int << 4) + T_int] = (Int2Int << 12) + (Int2Int << 4)
+ + T_boolean;
+ // table[(T_int<<4)+T_null] = T_undefined ;
+
+ // table[(T_null<<4)+T_undefined] = T_undefined ;
+ // table[(T_null<<4)+T_byte] = T_undefined ;
+ // table[(T_null<<4)+T_long] = T_undefined ;
+ // table[(T_null<<4)+T_short] = T_undefined ;
+ // table[(T_null<<4)+T_void] = T_undefined ;
+ // table[(T_null<<4)+T_String] = T_undefined ;
+ // table[(T_null<<4)+T_Object] = T_undefined ;
+ // table[(T_null<<4)+T_double] = T_undefined ;
+ // table[(T_null<<4)+T_float] = T_undefined ;
+ // table[(T_null<<4)+T_boolean] = T_undefined ;
+ // table[(T_null<<4)+T_char] = T_undefined ;
+ // table[(T_null<<4)+T_int] = T_undefined ;
+ // table[(T_null<<4)+T_null] = T_undefined ;
+
+ return table;
+ }
+
+ public static final int[] get_LESS_EQUAL() {
+
+ // the code is an int
+ // (cast) left Op (cast) rigth --> result
+ // 0000 0000 0000 0000 0000
+ // <<16 <<12 <<8 <<4
+
+ // int[] table = new int[16*16] ;
+ return get_LESS();
+ }
+
+ public static final int[] get_MINUS() {
+
+ // the code is an int
+ // (cast) left Op (cast) rigth --> result
+ // 0000 0000 0000 0000 0000
+ // <<16 <<12 <<8 <<4
+
+ int[] table = new int[16 * 16];
+
+ table = (int[]) get_PLUS().clone();
+
+ // customization
+ table[(T_String << 4) + T_byte] = T_undefined;
+ table[(T_String << 4) + T_long] = T_undefined;
+ table[(T_String << 4) + T_short] = T_undefined;
+ table[(T_String << 4) + T_void] = T_undefined;
+ table[(T_String << 4) + T_String] = T_undefined;
+ table[(T_String << 4) + T_Object] = T_undefined;
+ table[(T_String << 4) + T_double] = T_undefined;
+ table[(T_String << 4) + T_float] = T_undefined;
+ table[(T_String << 4) + T_boolean] = T_undefined;
+ table[(T_String << 4) + T_char] = T_undefined;
+ table[(T_String << 4) + T_int] = T_undefined;
+ table[(T_String << 4) + T_null] = T_undefined;
+
+ table[(T_byte << 4) + T_String] = T_undefined;
+ table[(T_long << 4) + T_String] = T_undefined;
+ table[(T_short << 4) + T_String] = T_undefined;
+ table[(T_void << 4) + T_String] = T_undefined;
+ table[(T_Object << 4) + T_String] = T_undefined;
+ table[(T_double << 4) + T_String] = T_undefined;
+ table[(T_float << 4) + T_String] = T_undefined;
+ table[(T_boolean << 4) + T_String] = T_undefined;
+ table[(T_char << 4) + T_String] = T_undefined;
+ table[(T_int << 4) + T_String] = T_undefined;
+ table[(T_null << 4) + T_String] = T_undefined;
+
+ table[(T_null << 4) + T_null] = T_undefined;
+
+ return table;
+ }
+
+ public static final int[] get_MULTIPLY() {
+
+ // the code is an int
+ // (cast) left Op (cast) rigth --> result
+ // 0000 0000 0000 0000 0000
+ // <<16 <<12 <<8 <<4
+
+ // int[] table = new int[16*16] ;
+ return get_MINUS();
+ }
+
+ public static final int[] get_OR() {
+
+ // the code is an int
+ // (cast) left Op (cast) rigth --> result
+ // 0000 0000 0000 0000 0000
+ // <<16 <<12 <<8 <<4
+
+ // int[] table = new int[16*16] ;
+ return get_AND();
+ }
+
+ public static final int[] get_OR_OR() {
+
+ // the code is an int
+ // (cast) left Op (cast) rigth --> result
+ // 0000 0000 0000 0000 0000
+ // <<16 <<12 <<8 <<4
+
+ // int[] table = new int[16*16] ;
+ return get_AND_AND();
+ }
+
+ public static final int[] get_PLUS() {
+
+ // the code is an int
+ // (cast) left Op (cast) rigth --> result
+ // 0000 0000 0000 0000 0000
+ // <<16 <<12 <<8 <<4
+
+ int[] table = new int[16 * 16];
+
+ // table[(T_undefined<<4)+T_undefined] = T_undefined ;
+ // table[(T_undefined<<4)+T_byte] = T_undefined ;
+ // table[(T_undefined<<4)+T_long] = T_undefined ;
+ // table[(T_undefined<<4)+T_short] = T_undefined ;
+ // table[(T_undefined<<4)+T_void] = T_undefined ;
+ // table[(T_undefined<<4)+T_String] = T_undefined ;
+ // table[(T_undefined<<4)+T_Object] = T_undefined ;
+ // table[(T_undefined<<4)+T_double] = T_undefined ;
+ // table[(T_undefined<<4)+T_float] = T_undefined ;
+ // table[(T_undefined<<4)+T_boolean] = T_undefined ;
+ // table[(T_undefined<<4)+T_char] = T_undefined ;
+ // table[(T_undefined<<4)+T_int] = T_undefined ;
+ // table[(T_undefined<<4)+T_null] = T_undefined ;
+
+ // table[(T_byte<<4)+T_undefined] = T_undefined ;
+ table[(T_byte << 4) + T_byte] = (Byte2Int << 12) + (Byte2Int << 4)
+ + T_int;
+ table[(T_byte << 4) + T_long] = (Byte2Long << 12) + (Long2Long << 4)
+ + T_long;
+ table[(T_byte << 4) + T_short] = (Byte2Int << 12) + (Short2Int << 4)
+ + T_int;
+ // table[(T_byte<<4)+T_void] = T_undefined ;
+ table[(T_byte << 4) + T_String] = (Byte2Byte << 12)
+ + (String2String << 4) + T_String;
+ // table[(T_byte<<4)+T_Object] = T_undefined ;
+ table[(T_byte << 4) + T_double] = (Byte2Double << 12)
+ + (Double2Double << 4) + T_double;
+ table[(T_byte << 4) + T_float] = (Byte2Float << 12)
+ + (Float2Float << 4) + T_float;
+ // table[(T_byte<<4)+T_boolean] = T_undefined ;
+ table[(T_byte << 4) + T_char] = (Byte2Int << 12) + (Char2Int << 4)
+ + T_int;
+ table[(T_byte << 4) + T_int] = (Byte2Int << 12) + (Int2Int << 4)
+ + T_int;
+ // table[(T_byte<<4)+T_null] = T_undefined ;
+
+ // table[(T_long<<4)+T_undefined] = T_undefined ;
+ table[(T_long << 4) + T_byte] = (Long2Long << 12) + (Byte2Long << 4)
+ + T_long;
+ table[(T_long << 4) + T_long] = (Long2Long << 12) + (Long2Long << 4)
+ + T_long;
+ table[(T_long << 4) + T_short] = (Long2Long << 12) + (Short2Long << 4)
+ + T_long;
+ // table[(T_long<<4)+T_void] = T_undefined ;
+ table[(T_long << 4) + T_String] = (Long2Long << 12)
+ + (String2String << 4) + T_String;
+ // table[(T_long<<4)+T_Object] = T_undefined ;
+ table[(T_long << 4) + T_double] = (Long2Double << 12)
+ + (Double2Double << 4) + T_double;
+ table[(T_long << 4) + T_float] = (Long2Float << 12)
+ + (Float2Float << 4) + T_float;
+ // table[(T_long<<4)+T_boolean] = T_undefined ;
+ table[(T_long << 4) + T_char] = (Long2Long << 12) + (Char2Long << 4)
+ + T_long;
+ table[(T_long << 4) + T_int] = (Long2Long << 12) + (Int2Long << 4)
+ + T_long;
+ ;
+ // table[(T_long<<4)+T_null] = T_undefined ;
+
+ // table[(T_short<<4)+T_undefined] = T_undefined ;
+ table[(T_short << 4) + T_byte] = (Short2Int << 12) + (Byte2Int << 4)
+ + T_int;
+ table[(T_short << 4) + T_long] = (Short2Long << 12) + (Long2Long << 4)
+ + T_long;
+ table[(T_short << 4) + T_short] = (Short2Int << 12) + (Short2Int << 4)
+ + T_int;
+ // table[(T_short<<4)+T_void] = T_undefined ;
+ table[(T_short << 4) + T_String] = (Short2Short << 12)
+ + (String2String << 4) + T_String;
+ // table[(T_short<<4)+T_Object] = T_undefined ;
+ table[(T_short << 4) + T_double] = (Short2Double << 12)
+ + (Double2Double << 4) + T_double;
+ table[(T_short << 4) + T_float] = (Short2Float << 12)
+ + (Float2Float << 4) + T_float;
+ // table[(T_short<<4)+T_boolean] = T_undefined ;
+ table[(T_short << 4) + T_char] = (Short2Int << 12) + (Char2Int << 4)
+ + T_int;
+ table[(T_short << 4) + T_int] = (Short2Int << 12) + (Int2Int << 4)
+ + T_int;
+ // table[(T_short<<4)+T_null] = T_undefined ;
+
+ // table[(T_void<<4)+T_undefined] = T_undefined ;
+ // table[(T_void<<4)+T_byte] = T_undefined ;
+ // table[(T_void<<4)+T_long] = T_undefined ;
+ // table[(T_void<<4)+T_short] = T_undefined ;
+ // table[(T_void<<4)+T_void] = T_undefined ;
+ // table[(T_void<<4)+T_String] = T_undefined ;
+ // table[(T_void<<4)+T_Object] = T_undefined ;
+ // table[(T_void<<4)+T_double] = T_undefined ;
+ // table[(T_void<<4)+T_float] = T_undefined ;
+ // table[(T_void<<4)+T_boolean] = T_undefined ;
+ // table[(T_void<<4)+T_char] = T_undefined ;
+ // table[(T_void<<4)+T_int] = T_undefined ;
+ // table[(T_void<<4)+T_null] = T_undefined ;
+
+ // table[(T_String<<4)+T_undefined] = T_undefined ;
+ table[(T_String << 4) + T_byte] = (String2String << 12)
+ + (Byte2Byte << 4) + T_String;
+ table[(T_String << 4) + T_long] = (String2String << 12)
+ + (Long2Long << 4) + T_String;
+ table[(T_String << 4) + T_short] = (String2String << 12)
+ + (Short2Short << 4) + T_String;
+ // table[(T_String<<4)+T_void] = T_undefined ;
+ table[(T_String << 4) + T_String] = (String2String << 12)
+ + (String2String << 4) + T_String;
+ table[(T_String << 4) + T_Object] = (String2String << 12)
+ + (Object2Object << 4) + T_String;
+ table[(T_String << 4) + T_double] = (String2String << 12)
+ + (Double2Double << 4) + T_String;
+ table[(T_String << 4) + T_float] = (String2String << 12)
+ + (Float2Float << 4) + T_String;
+ table[(T_String << 4) + T_boolean] = (String2String << 12)
+ + (Boolean2Boolean << 4) + T_String;
+ table[(T_String << 4) + T_char] = (String2String << 12)
+ + (Char2Char << 4) + T_String;
+ table[(T_String << 4) + T_int] = (String2String << 12) + (Int2Int << 4)
+ + T_String;
+ table[(T_String << 4) + T_null] = (String2String << 12) + (T_null << 8)
+ + (T_null << 4) + T_String;
+
+ // table[(T_Object<<4)+T_undefined] = T_undefined ;
+ // table[(T_Object<<4)+T_byte] = T_undefined ;
+ // table[(T_Object<<4)+T_long] = T_undefined ;
+ // table[(T_Object<<4)+T_short] = T_undefined ;
+ // table[(T_Object<<4)+T_void] = T_undefined ;
+ table[(T_Object << 4) + T_String] = (Object2Object << 12)
+ + (String2String << 4) + T_String;
+ // table[(T_Object<<4)+T_Object] = T_undefined ;
+ // table[(T_Object<<4)+T_double] = T_undefined ;
+ // table[(T_Object<<4)+T_float] = T_undefined ;
+ // table[(T_Object<<4)+T_boolean] = T_undefined ;
+ // table[(T_Object<<4)+T_char] = T_undefined ;
+ // table[(T_Object<<4)+T_int] = T_undefined ;
+ // table[(T_Object<<4)+T_null] = T_undefined ;
+
+ // table[(T_double<<4)+T_undefined] = T_undefined ;
+ table[(T_double << 4) + T_byte] = (Double2Double << 12)
+ + (Byte2Double << 4) + T_double;
+ table[(T_double << 4) + T_long] = (Double2Double << 12)
+ + (Long2Double << 4) + T_double;
+ table[(T_double << 4) + T_short] = (Double2Double << 12)
+ + (Short2Double << 4) + T_double;
+ ;
+ // table[(T_double<<4)+T_void] = T_undefined ;
+ table[(T_double << 4) + T_String] = (Double2Double << 12)
+ + (String2String << 4) + T_String;
+ // table[(T_double<<4)+T_Object] = T_undefined ;
+ table[(T_double << 4) + T_double] = (Double2Double << 12)
+ + (Double2Double << 4) + T_double;
+ table[(T_double << 4) + T_float] = (Double2Double << 12)
+ + (Float2Double << 4) + T_double;
+ ;
+ // table[(T_double<<4)+T_boolean] = T_undefined ;
+ table[(T_double << 4) + T_char] = (Double2Double << 12)
+ + (Char2Double << 4) + T_double;
+ ;
+ table[(T_double << 4) + T_int] = (Double2Double << 12)
+ + (Int2Double << 4) + T_double;
+ ;
+ // table[(T_double<<4)+T_null] = T_undefined ;
+
+ // table[(T_float<<4)+T_undefined] = T_undefined ;
+ table[(T_float << 4) + T_byte] = (Float2Float << 12)
+ + (Byte2Float << 4) + T_float;
+ table[(T_float << 4) + T_long] = (Float2Float << 12)
+ + (Long2Float << 4) + T_float;
+ table[(T_float << 4) + T_short] = (Float2Float << 12)
+ + (Short2Float << 4) + T_float;
+ // table[(T_float<<4)+T_void] = T_undefined ;
+ table[(T_float << 4) + T_String] = (Float2Float << 12)
+ + (String2String << 4) + T_String;
+ // table[(T_float<<4)+T_Object] = T_undefined ;
+ table[(T_float << 4) + T_double] = (Float2Double << 12)
+ + (Double2Double << 4) + T_double;
+ table[(T_float << 4) + T_float] = (Float2Float << 12)
+ + (Float2Float << 4) + T_float;
+ // table[(T_float<<4)+T_boolean] = T_undefined ;
+ table[(T_float << 4) + T_char] = (Float2Float << 12)
+ + (Char2Float << 4) + T_float;
+ table[(T_float << 4) + T_int] = (Float2Float << 12) + (Int2Float << 4)
+ + T_float;
+ // table[(T_float<<4)+T_null] = T_undefined ;
+
+ // table[(T_boolean<<4)+T_undefined] = T_undefined ;
+ // table[(T_boolean<<4)+T_byte] = T_undefined ;
+ // table[(T_boolean<<4)+T_long] = T_undefined ;
+ // table[(T_boolean<<4)+T_short] = T_undefined ;
+ // table[(T_boolean<<4)+T_void] = T_undefined ;
+ table[(T_boolean << 4) + T_String] = (Boolean2Boolean << 12)
+ + (String2String << 4) + T_String;
+ // table[(T_boolean<<4)+T_Object] = T_undefined ;
+ // table[(T_boolean<<4)+T_double] = T_undefined ;
+ // table[(T_boolean<<4)+T_float] = T_undefined ;
+ // table[(T_boolean<<4)+T_boolean] = T_undefined ;
+ // table[(T_boolean<<4)+T_char] = T_undefined ;
+ // table[(T_boolean<<4)+T_int] = T_undefined ;
+ // table[(T_boolean<<4)+T_null] = T_undefined ;
+
+ // table[(T_char<<4)+T_undefined] = T_undefined ;
+ table[(T_char << 4) + T_byte] = (Char2Int << 12) + (Byte2Int << 4)
+ + T_int;
+ table[(T_char << 4) + T_long] = (Char2Long << 12) + (Long2Long << 4)
+ + T_long;
+ table[(T_char << 4) + T_short] = (Char2Int << 12) + (Short2Int << 4)
+ + T_int;
+ // table[(T_char<<4)+T_void] = T_undefined ;
+ table[(T_char << 4) + T_String] = (Char2Char << 12)
+ + (String2String << 4) + T_String;
+ // table[(T_char<<4)+T_Object] = T_undefined ;
+ table[(T_char << 4) + T_double] = (Char2Double << 12)
+ + (Double2Double << 4) + T_double;
+ table[(T_char << 4) + T_float] = (Char2Float << 12)
+ + (Float2Float << 4) + T_float;
+ // table[(T_char<<4)+T_boolean] = T_undefined ;
+ table[(T_char << 4) + T_char] = (Char2Int << 12) + (Char2Int << 4)
+ + T_int;
+ ;
+ table[(T_char << 4) + T_int] = (Char2Int << 12) + (Int2Int << 4)
+ + T_int;
+ // table[(T_char<<4)+T_null] = T_undefined ;
+
+ // table[(T_int<<4)+T_undefined] = T_undefined ;
+ table[(T_int << 4) + T_byte] = (Int2Int << 12) + (Byte2Int << 4)
+ + T_int;
+ table[(T_int << 4) + T_long] = (Int2Long << 12) + (Long2Long << 4)
+ + T_long;
+ table[(T_int << 4) + T_short] = (Int2Int << 12) + (Short2Int << 4)
+ + T_int;
+ // table[(T_int<<4)+T_void] = T_undefined ;
+ table[(T_int << 4) + T_String] = (Int2Int << 12) + (String2String << 4)
+ + T_String;
+ // table[(T_int<<4)+T_Object] = T_undefined ;
+ table[(T_int << 4) + T_double] = (Int2Double << 12)
+ + (Double2Double << 4) + T_double;
+ table[(T_int << 4) + T_float] = (Int2Float << 12) + (Float2Float << 4)
+ + T_float;
+ // table[(T_int<<4)+T_boolean] = T_undefined ;
+ table[(T_int << 4) + T_char] = (Int2Int << 12) + (Char2Int << 4)
+ + T_int;
+ table[(T_int << 4) + T_int] = (Int2Int << 12) + (Int2Int << 4) + T_int;
+ // table[(T_int<<4)+T_null] = T_undefined ;
+
+ // table[(T_null<<4)+T_undefined] = T_undefined ;
+ // table[(T_null<<4)+T_byte] = T_undefined ;
+ // table[(T_null<<4)+T_long] = T_undefined ;
+ // table[(T_null<<4)+T_short] = T_undefined ;
+ // table[(T_null<<4)+T_void] = T_undefined ;
+ table[(T_null << 4) + T_String] = (T_null << 16) + (T_null << 12)
+ + (String2String << 4) + T_String;
+ // table[(T_null<<4)+T_Object] = T_undefined ;
+ // table[(T_null<<4)+T_double] = T_undefined ;
+ // table[(T_null<<4)+T_float] = T_undefined ;
+ // table[(T_null<<4)+T_boolean] = T_undefined ;
+ // table[(T_null<<4)+T_char] = T_undefined ;
+ // table[(T_null<<4)+T_int] = T_undefined ;
+ // table[(T_null<<4)+T_null] =
+ // (Null2String<<12)+(Null2String<<4)+T_String ;;
+
+ return table;
+ }
+
+ public static final int[] get_REMAINDER() {
+
+ // the code is an int
+ // (cast) left Op (cast) rigth --> result
+ // 0000 0000 0000 0000 0000
+ // <<16 <<12 <<8 <<4
+
+ // int[] table = new int[16*16] ;
+ return get_MINUS();
+ }
+
+ public static final int[] get_RIGHT_SHIFT() {
+
+ // the code is an int
+ // (cast) left Op (cast) rigth --> result
+ // 0000 0000 0000 0000 0000
+ // <<16 <<12 <<8 <<4
+
+ // int[] table = new int[16*16] ;
+ return get_LEFT_SHIFT();
+ }
+
+ public static final int[] get_UNSIGNED_RIGHT_SHIFT() {
+
+ // the code is an int
+ // (cast) left Op (cast) rigth --> result
+ // 0000 0000 0000 0000 0000
+ // <<16 <<12 <<8 <<4
+
+ // int[] table = new int[16*16] ;
+ return get_LEFT_SHIFT();
+ }
+
+ public static final int[] get_XOR() {
+
+ // the code is an int
+ // (cast) left Op (cast) rigth --> result
+ // 0000 0000 0000 0000 0000
+ // <<16 <<12 <<8 <<4
+
+ // int[] table = new int[16*16] ;
+ return get_AND();
+ }
+
+ public String operatorToString() {
+ switch ((bits & OperatorMASK) >> OperatorSHIFT) {
+ case EQUAL_EQUAL:
+ return "=="; //$NON-NLS-1$
+ case LESS_EQUAL:
+ return "<="; //$NON-NLS-1$
+ case GREATER_EQUAL:
+ return ">="; //$NON-NLS-1$
+ case NOT_EQUAL:
+ return "!="; //$NON-NLS-1$
+ case LEFT_SHIFT:
+ return "<<"; //$NON-NLS-1$
+ case RIGHT_SHIFT:
+ return ">>"; //$NON-NLS-1$
+ case UNSIGNED_RIGHT_SHIFT:
+ return ">>>"; //$NON-NLS-1$
+ case OR_OR:
+ return "||"; //$NON-NLS-1$
+ case AND_AND:
+ return "&&"; //$NON-NLS-1$
+ case PLUS:
+ return "+"; //$NON-NLS-1$
+ case MINUS:
+ return "-"; //$NON-NLS-1$
+ case NOT:
+ return "!"; //$NON-NLS-1$
+ case REMAINDER:
+ return "%"; //$NON-NLS-1$
+ case XOR:
+ return "^"; //$NON-NLS-1$
+ case AND:
+ return "&"; //$NON-NLS-1$
+ case MULTIPLY:
+ return "*"; //$NON-NLS-1$
+ case OR:
+ return "|"; //$NON-NLS-1$
+ case TWIDDLE:
+ return "~"; //$NON-NLS-1$
+ case DIVIDE:
+ return "/"; //$NON-NLS-1$
+ case GREATER:
+ return ">"; //$NON-NLS-1$
+ case LESS:
+ return "<"; //$NON-NLS-1$
+ case QUESTIONCOLON:
+ return "?:"; //$NON-NLS-1$
+ case EQUAL:
+ return "="; //$NON-NLS-1$
+ }
+ ;
+ return "unknown operator"; //$NON-NLS-1$
+ }
+
+ public StringBuffer printExpression(int indent, StringBuffer output) {
+
+ output.append('(');
+ return printExpressionNoParenthesis(0, output).append(')');
+ }
+
+ public abstract StringBuffer printExpressionNoParenthesis(int indent,
+ StringBuffer output);
+
+ public String toStringExpression() {
+
+ // subclass redefine toStringExpressionNoParenthesis()
+ return "(" + toStringExpressionNoParenthesis() + ")"; //$NON-NLS-2$ //$NON-NLS-1$
+ }
+
+ public abstract String toStringExpressionNoParenthesis();
}