/******************************************************************************* * 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; 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(); }