Пример #1
0
 internal BaseScripter(CSLite_Scripter owner)
 {
     this.Owner = owner;
     this.symbol_table = new SymbolTable(this);
     this.code = new Code(this);
     this.module_list = new ModuleList(this);
     this.parser_list = new ParserList();
     this.Error_List = new ErrorList(this);
     this.Warning_List = new ErrorList(this);
     this.PPDirectiveList = new StringList(false);
     this.RegisteredTypes = new RegisteredTypeList();
     this.RegisteredNamespaces = new StringList(false);
     this.UserTypes = new Hashtable();
     this.UserNamespaces = new StringList(false);
     this.ForbiddenNamespaces = new StringList(false);
     this.UserInstances = new Hashtable();
     this.UserVariables = new Hashtable();
     this.OperatorHelpers = new Hashtable();
     this.available_types = new StringList(false);
     this.ForbiddenTypes = new StringList(false);
     this.EntryId = 0;
     this.event_dispatcher = new EventDispatcher(this, "CSLiteEventDispatcher");
     if (CSLite_Scripter.AUTO_IMPORTING_SWITCH)
     {
         this.RegisterAvailableNamespaces();
     }
 }
Пример #2
0
 internal virtual void Init(BaseScripter scripter, Module m)
 {
     this.scripter = scripter;
     this.code = scripter.code;
     this.symbol_table = scripter.symbol_table;
     this.scanner.Init(scripter, m.Text);
     this.temp_count = 0;
     this.curr_module = m.NameIndex;
     this.level_stack.Clear();
     this.level_stack.Push(0);
     this.level_stack.Push(this.RootNamespaceId);
     this.block_count = 0;
     this.block_stack.Clear();
     this.block_stack.Push(0);
     this.block_list.Clear();
     this.DECLARE_SWITCH = false;
     this.DECLARATION_CHECK_SWITCH = false;
 }
Пример #3
0
 internal void InitExpression(BaseScripter scripter, Module m, int sub_id, string expr)
 {
     this.scripter = scripter;
     this.code = scripter.code;
     this.symbol_table = scripter.symbol_table;
     this.scanner.Init(scripter, expr);
     this.temp_count = 0;
     this.curr_module = m.NameIndex;
     this.level_stack.Clear();
     this.level_stack.Push(0);
     this.level_stack.Push(sub_id);
     this.block_count = 0;
     this.block_stack.Clear();
     this.block_stack.Push(0);
     this.block_list.Clear();
     this.DECLARE_SWITCH = false;
 }
Пример #4
0
 public Code(BaseScripter scripter)
 {
     int num;
     this.goto_line = 0;
     this.Terminated = false;
     this.Paused = false;
     this.curr_stack_count = 0;
     this.debugging = true;
     this.scripter = scripter;
     this.symbol_table = scripter.symbol_table;
     this.Operators = new StringList(true);
     this.OP_DUMMY = -this.Operators.Add("DUMMY");
     this.OP_UPCASE_ON = -this.Operators.Add("UPCASE ON");
     this.OP_UPCASE_OFF = -this.Operators.Add("UPCASE OFF");
     this.OP_EXPLICIT_ON = -this.Operators.Add("EXPLICIT ON");
     this.OP_EXPLICIT_OFF = -this.Operators.Add("EXPLICIT OFF");
     this.OP_STRICT_ON = -this.Operators.Add("STRICT ON");
     this.OP_STRICT_OFF = -this.Operators.Add("STRICT OFF");
     this.OP_HALT = -this.Operators.Add("HALT");
     this.OP_PRINT = -this.Operators.Add("PRINT");
     this.OP_SEPARATOR = -this.Operators.Add("SEP");
     this.OP_DEFINE = -this.Operators.Add("DEFINE");
     this.OP_UNDEF = -this.Operators.Add("UNDEF");
     this.OP_START_REGION = -this.Operators.Add("START REGION");
     this.OP_END_REGION = -this.Operators.Add("END REGION");
     this.OP_BEGIN_MODULE = -this.Operators.Add("BEGIN MODULE");
     this.OP_END_MODULE = -this.Operators.Add("END MODULE");
     this.OP_ASSIGN_TYPE = -this.Operators.Add("ASSIGN TYPE");
     this.OP_ASSIGN_COND_TYPE = -this.Operators.Add("ASSIGN COND TYPE");
     this.OP_CREATE_REF_TYPE = -this.Operators.Add("CREATE REF TYPE");
     this.OP_SET_REF_TYPE = -this.Operators.Add("SET REF TYPE");
     this.OP_CREATE_NAMESPACE = -this.Operators.Add("CREATE NAMESPACE");
     this.OP_CREATE_CLASS = -this.Operators.Add("CREATE CLASS");
     this.OP_END_CLASS = -this.Operators.Add("END CLASS");
     this.OP_CREATE_FIELD = -this.Operators.Add("CREATE FIELD");
     this.OP_CREATE_PROPERTY = -this.Operators.Add("CREATE PROPERTY");
     this.OP_CREATE_EVENT = -this.Operators.Add("CREATE EVENT");
     this.OP_BEGIN_USING = -this.Operators.Add("BEGIN USING");
     this.OP_END_USING = -this.Operators.Add("END USING");
     this.OP_CREATE_USING_ALIAS = -this.Operators.Add("CREATE USING ALIAS");
     this.OP_CREATE_TYPE_REFERENCE = -this.Operators.Add("CREATE TYPE REFERENCE");
     this.OP_ADD_MODIFIER = -this.Operators.Add("ADD MODIFIER");
     this.OP_ADD_ANCESTOR = -this.Operators.Add("ADD ANCESTOR");
     this.OP_ADD_UNDERLYING_TYPE = -this.Operators.Add("ADD UNDERLYING TYPE");
     this.OP_ADD_READ_ACCESSOR = -this.Operators.Add("ADD READ ACCESSOR");
     this.OP_ADD_WRITE_ACCESSOR = -this.Operators.Add("ADD WRITE ACCESSOR");
     this.OP_SET_DEFAULT = -this.Operators.Add("SET DEFAULT");
     this.OP_ADD_ADD_ACCESSOR = -this.Operators.Add("ADD ADD ACCESSOR");
     this.OP_ADD_REMOVE_ACCESSOR = -this.Operators.Add("ADD REMOVE ACCESSOR");
     this.OP_ADD_PATTERN = -this.Operators.Add("ADD PATTERN");
     this.OP_ADD_IMPLEMENTS = -this.Operators.Add("ADD IMPLEMENTS");
     this.OP_ADD_HANDLES = -this.Operators.Add("ADD HANDLES");
     this.OP_BEGIN_CALL = -this.Operators.Add("BEGIN CALL");
     this.OP_EVAL = -this.Operators.Add("EVAL");
     this.OP_EVAL_TYPE = -this.Operators.Add("EVAL TYPE");
     this.OP_EVAL_BASE_TYPE = -this.Operators.Add("EVAL BASE TYPE");
     this.OP_ASSIGN_NAME = -this.Operators.Add("ASSIGN NAME");
     this.OP_ADD_MIN_VALUE = -this.Operators.Add("ADD MIN VALUE");
     this.OP_ADD_MAX_VALUE = -this.Operators.Add("ADD MAX VALUE");
     this.OP_ADD_ARRAY_RANGE = -this.Operators.Add("ADD ARRAY RANGE");
     this.OP_ADD_ARRAY_INDEX = -this.Operators.Add("ADD ARRAY INDEX");
     this.OP_CREATE_METHOD = -this.Operators.Add("CREATE METHOD");
     this.OP_INIT_METHOD = -this.Operators.Add("INIT METHOD");
     this.OP_END_METHOD = -this.Operators.Add("END METHOD");
     this.OP_ADD_PARAM = -this.Operators.Add("ADD PARAM");
     this.OP_ADD_PARAMS = -this.Operators.Add("ADD PARAMS");
     this.OP_ADD_DEFAULT_VALUE = -this.Operators.Add("ADD DEFAULT VALUE");
     this.OP_DECLARE_LOCAL_VARIABLE = -this.Operators.Add("DECLARE LOCAL VARIABLE");
     this.OP_DECLARE_LOCAL_VARIABLE_RUNTIME = -this.Operators.Add("DECLARE LOCAL VARIABLE RUNTIME");
     this.OP_DECLARE_LOCAL_SIMPLE = -this.Operators.Add("DECLARE LOCAL SIMPLE");
     this.OP_ADD_EXPLICIT_INTERFACE = -this.Operators.Add("ADD EXPLICIT INTERFACE");
     this.OP_ADD_EVENT_FIELD = -this.Operators.Add("ADD EVENT FIELD");
     this.OP_CALL_BASE = -this.Operators.Add("CALL BASE");
     this.OP_CALL_SIMPLE = -this.Operators.Add("CALL SIMPLE");
     this.OP_CHECK_STRUCT_CONSTRUCTOR = -this.Operators.Add("CHECK STRUCT CONSTRUCTOR");
     this.OP_INSERT_STRUCT_CONSTRUCTORS = -this.Operators.Add("INSERT STRUCT CONSTRUCTORS");
     this.OP_NOP = -this.Operators.Add("NOP");
     this.OP_INIT_STATIC_VAR = -this.Operators.Add("INIT STATIC VAR");
     this.OP_LABEL = -this.Operators.Add("LABEL");
     this.OP_ASSIGN = -this.Operators.Add("=");
     this.OP_ASSIGN_STRUCT = -this.Operators.Add("= (struct)");
     this.OP_BITWISE_AND = -this.Operators.Add("&");
     this.OP_BITWISE_XOR = -this.Operators.Add("^");
     this.OP_BITWISE_OR = -this.Operators.Add("|");
     this.OP_LOGICAL_OR = -this.Operators.Add("||");
     this.OP_LOGICAL_AND = -this.Operators.Add("&&");
     this.OP_PLUS = -this.Operators.Add("+");
     this.OP_INC = -this.Operators.Add("++");
     this.OP_MINUS = -this.Operators.Add("-");
     this.OP_DEC = -this.Operators.Add("--");
     this.OP_MULT = -this.Operators.Add("*");
     this.OP_EXPONENT = -this.Operators.Add("EXP");
     this.OP_MOD = -this.Operators.Add("%");
     this.OP_DIV = -this.Operators.Add("-");
     this.OP_EQ = -this.Operators.Add("==");
     this.OP_NE = -this.Operators.Add("<>");
     this.OP_GT = -this.Operators.Add(">");
     this.OP_LT = -this.Operators.Add("<");
     this.OP_GE = -this.Operators.Add(">=");
     this.OP_LE = -this.Operators.Add("<=");
     this.OP_IS = -this.Operators.Add("is");
     this.OP_AS = -this.Operators.Add("as");
     this.OP_LEFT_SHIFT = -this.Operators.Add("<<");
     this.OP_RIGHT_SHIFT = -this.Operators.Add(">>");
     this.OP_UNARY_PLUS = -this.Operators.Add("+ (unary)");
     this.OP_UNARY_MINUS = -this.Operators.Add("- (unary)");
     this.OP_NOT = -this.Operators.Add("not");
     this.OP_COMPLEMENT = -this.Operators.Add("~");
     this.OP_TRUE = -this.Operators.Add("true");
     this.OP_FALSE = -this.Operators.Add("false");
     this.OP_GO = -this.Operators.Add("GO");
     this.OP_GO_FALSE = -this.Operators.Add("GO FALSE");
     this.OP_GO_TRUE = -this.Operators.Add("GO TRUE");
     this.OP_GO_NULL = -this.Operators.Add("GO NULL");
     this.OP_GOTO_START = -this.Operators.Add("GOTO START");
     this.OP_GOTO_CONTINUE = -this.Operators.Add("GOTO CONTINUE");
     this.OP_TRY_ON = -this.Operators.Add("TRY ON");
     this.OP_TRY_OFF = -this.Operators.Add("TRY OFF");
     this.OP_THROW = -this.Operators.Add("THROW");
     this.OP_CATCH = -this.Operators.Add("CATCH");
     this.OP_FINALLY = -this.Operators.Add("FINALLY");
     this.OP_DISCARD_ERROR = -this.Operators.Add("DISCARD ERROR");
     this.OP_EXIT_ON_ERROR = -this.Operators.Add("EXIT ON ERROR");
     this.OP_ONERROR = -this.Operators.Add("ON ERROR");
     this.OP_RESUME = -this.Operators.Add("RESUME");
     this.OP_RESUME_NEXT = -this.Operators.Add("RESUME NEXT");
     this.OP_CREATE_ARRAY_INSTANCE = -this.Operators.Add("CREATE ARRAY INSTANCE");
     this.OP_CREATE_OBJECT = -this.Operators.Add("CREATE OBJECT");
     this.OP_CREATE_REFERENCE = -this.Operators.Add("CREATE REFERENCE");
     this.OP_SETUP_DELEGATE = -this.Operators.Add("SETUP DELEGATE");
     this.OP_ADD_DELEGATES = -this.Operators.Add("ADD DELEGATES");
     this.OP_SUB_DELEGATES = -this.Operators.Add("SUB DELEGATES");
     this.OP_EQ_DELEGATES = -this.Operators.Add("EQ DELEGATES");
     this.OP_NE_DELEGATES = -this.Operators.Add("NE DELEGATES");
     this.OP_ADDRESS_OF = -this.Operators.Add("ADDRESS OF");
     this.OP_CREATE_INDEX_OBJECT = -this.Operators.Add("CREATE INDEX OBJECT");
     this.OP_ADD_INDEX = -this.Operators.Add("ADD INDEX");
     this.OP_SETUP_INDEX_OBJECT = -this.Operators.Add("SETUP INDEX OBJECT");
     this.OP_PUSH = -this.Operators.Add("PUSH");
     this.OP_CALL = -this.Operators.Add("CALL");
     this.OP_CALL_VIRT = -this.Operators.Add("CALL VIRT");
     this.OP_DYNAMIC_INVOKE = -this.Operators.Add("DYNAMIC INVOKE");
     this.OP_CALL_ADD_EVENT = -this.Operators.Add("CALL ADD EVENT");
     this.OP_RAISE_EVENT = -this.Operators.Add("RAISE EVENT");
     this.OP_FIND_FIRST_DELEGATE = -this.Operators.Add("FIND FIRST DELEGATE");
     this.OP_FIND_NEXT_DELEGATE = -this.Operators.Add("FIND NEXT DELEGATE");
     this.OP_RET = -this.Operators.Add("RET");
     this.OP_EXIT_SUB = -this.Operators.Add("EXIT SUB");
     this.OP_GET_PARAM_VALUE = -this.Operators.Add("GET PARAM VALUE");
     this.OP_CHECKED = -this.Operators.Add("CHECKED");
     this.OP_RESTORE_CHECKED_STATE = -this.Operators.Add("RESTORE CHECKED STATE");
     this.OP_DISPOSE = -this.Operators.Add("DISPOSE");
     this.OP_TYPEOF = -this.Operators.Add("TYPEOF");
     this.OP_LOCK = -this.Operators.Add("LOCK");
     this.OP_UNLOCK = -this.Operators.Add("UNLOCK");
     this.OP_CAST = -this.Operators.Add("CAST");
     this.OP_TO_SBYTE = -this.Operators.Add("TO SBYTE");
     this.OP_TO_BYTE = -this.Operators.Add("TO BYTE");
     this.OP_TO_USHORT = -this.Operators.Add("TO USHORT");
     this.OP_TO_SHORT = -this.Operators.Add("TO SHORT");
     this.OP_TO_UINT = -this.Operators.Add("TO UINT");
     this.OP_TO_INT = -this.Operators.Add("TO INT");
     this.OP_TO_ULONG = -this.Operators.Add("TO ULONG");
     this.OP_TO_LONG = -this.Operators.Add("TO LONG");
     this.OP_TO_CHAR = -this.Operators.Add("TO CHAR");
     this.OP_TO_FLOAT = -this.Operators.Add("TO FLOAT");
     this.OP_TO_DOUBLE = -this.Operators.Add("TO DOUBLE");
     this.OP_TO_DECIMAL = -this.Operators.Add("TO DECIMAL");
     this.OP_TO_STRING = -this.Operators.Add("TO STRING");
     this.OP_TO_BOOLEAN = -this.Operators.Add("TO BOOLEAN");
     this.OP_TO_ENUM = -this.Operators.Add("TO ENUM");
     this.OP_TO_CHAR_ARRAY = -this.Operators.Add("TO CHAR[]");
     this.OP_NEGATION_INT = -this.Operators.Add("-(unary int)");
     this.OP_NEGATION_LONG = -this.Operators.Add("-(unary long)");
     this.OP_NEGATION_FLOAT = -this.Operators.Add("-(unary float)");
     this.OP_NEGATION_DOUBLE = -this.Operators.Add("-(unary double)");
     this.OP_NEGATION_DECIMAL = -this.Operators.Add("-(unary decimal)");
     this.OP_LOGICAL_NEGATION_BOOL = -this.Operators.Add("!(bool)");
     this.OP_BITWISE_COMPLEMENT_INT = -this.Operators.Add("~(int)");
     this.OP_BITWISE_COMPLEMENT_UINT = -this.Operators.Add("~(uint)");
     this.OP_BITWISE_COMPLEMENT_LONG = -this.Operators.Add("~(long)");
     this.OP_BITWISE_COMPLEMENT_ULONG = -this.Operators.Add("~(ulong)");
     this.OP_INC_SBYTE = -this.Operators.Add("++(sbyte)");
     this.OP_INC_BYTE = -this.Operators.Add("++(byte)");
     this.OP_INC_SHORT = -this.Operators.Add("++(short)");
     this.OP_INC_USHORT = -this.Operators.Add("++(ushort)");
     this.OP_INC_INT = -this.Operators.Add("++(int)");
     this.OP_INC_UINT = -this.Operators.Add("++(uint)");
     this.OP_INC_LONG = -this.Operators.Add("++(long)");
     this.OP_INC_ULONG = -this.Operators.Add("++(ulong)");
     this.OP_INC_CHAR = -this.Operators.Add("++(char)");
     this.OP_INC_FLOAT = -this.Operators.Add("++(float)");
     this.OP_INC_DOUBLE = -this.Operators.Add("++(double)");
     this.OP_INC_DECIMAL = -this.Operators.Add("++(decimal)");
     this.OP_DEC_SBYTE = -this.Operators.Add("--(sbyte)");
     this.OP_DEC_BYTE = -this.Operators.Add("--(byte)");
     this.OP_DEC_SHORT = -this.Operators.Add("--(short)");
     this.OP_DEC_USHORT = -this.Operators.Add("--(ushort)");
     this.OP_DEC_INT = -this.Operators.Add("--(int)");
     this.OP_DEC_UINT = -this.Operators.Add("--(uint)");
     this.OP_DEC_LONG = -this.Operators.Add("--(long)");
     this.OP_DEC_ULONG = -this.Operators.Add("--(ulong)");
     this.OP_DEC_CHAR = -this.Operators.Add("--(char)");
     this.OP_DEC_FLOAT = -this.Operators.Add("--(float)");
     this.OP_DEC_DOUBLE = -this.Operators.Add("--(double)");
     this.OP_DEC_DECIMAL = -this.Operators.Add("--(decimal)");
     this.OP_ADDITION_INT = -this.Operators.Add("+(int)");
     this.OP_ADDITION_UINT = -this.Operators.Add("+(uint)");
     this.OP_ADDITION_LONG = -this.Operators.Add("+(long)");
     this.OP_ADDITION_ULONG = -this.Operators.Add("+(ulong)");
     this.OP_ADDITION_FLOAT = -this.Operators.Add("+(float)");
     this.OP_ADDITION_DOUBLE = -this.Operators.Add("+(double)");
     this.OP_ADDITION_DECIMAL = -this.Operators.Add("+(decimal)");
     this.OP_ADDITION_STRING = -this.Operators.Add("+(string)");
     this.OP_SUBTRACTION_INT = -this.Operators.Add("-(int)");
     this.OP_SUBTRACTION_UINT = -this.Operators.Add("-(uint)");
     this.OP_SUBTRACTION_LONG = -this.Operators.Add("-(long)");
     this.OP_SUBTRACTION_ULONG = -this.Operators.Add("-(ulong)");
     this.OP_SUBTRACTION_FLOAT = -this.Operators.Add("-(float)");
     this.OP_SUBTRACTION_DOUBLE = -this.Operators.Add("-(double)");
     this.OP_SUBTRACTION_DECIMAL = -this.Operators.Add("-(decimal)");
     this.OP_MULTIPLICATION_INT = -this.Operators.Add("*(int)");
     this.OP_MULTIPLICATION_UINT = -this.Operators.Add("*(uint)");
     this.OP_MULTIPLICATION_LONG = -this.Operators.Add("*(long)");
     this.OP_MULTIPLICATION_ULONG = -this.Operators.Add("*(ulong)");
     this.OP_MULTIPLICATION_FLOAT = -this.Operators.Add("*(float)");
     this.OP_MULTIPLICATION_DOUBLE = -this.Operators.Add("*(double)");
     this.OP_MULTIPLICATION_DECIMAL = -this.Operators.Add("*(decimal)");
     this.OP_EXPONENT_INT = -this.Operators.Add("EXPONENT(int)");
     this.OP_EXPONENT_UINT = -this.Operators.Add("EXPONENT(uint)");
     this.OP_EXPONENT_LONG = -this.Operators.Add("EXPONENT(long)");
     this.OP_EXPONENT_ULONG = -this.Operators.Add("EXPONENT(ulong)");
     this.OP_EXPONENT_FLOAT = -this.Operators.Add("EXPONENT(float)");
     this.OP_EXPONENT_DOUBLE = -this.Operators.Add("EXPONENT(double)");
     this.OP_EXPONENT_DECIMAL = -this.Operators.Add("EXPONENT(decimal)");
     this.OP_DIVISION_INT = -this.Operators.Add("/(int)");
     this.OP_DIVISION_UINT = -this.Operators.Add("/(uint)");
     this.OP_DIVISION_LONG = -this.Operators.Add("/(long)");
     this.OP_DIVISION_ULONG = -this.Operators.Add("/(ulong)");
     this.OP_DIVISION_FLOAT = -this.Operators.Add("/(float)");
     this.OP_DIVISION_DOUBLE = -this.Operators.Add("/(double)");
     this.OP_DIVISION_DECIMAL = -this.Operators.Add("/(decimal)");
     this.OP_REMAINDER_INT = -this.Operators.Add("%(int)");
     this.OP_REMAINDER_UINT = -this.Operators.Add("%(uint)");
     this.OP_REMAINDER_LONG = -this.Operators.Add("%(long)");
     this.OP_REMAINDER_ULONG = -this.Operators.Add("%(ulong)");
     this.OP_REMAINDER_FLOAT = -this.Operators.Add("%(float)");
     this.OP_REMAINDER_DOUBLE = -this.Operators.Add("%(double)");
     this.OP_REMAINDER_DECIMAL = -this.Operators.Add("%(decimal)");
     this.OP_LEFT_SHIFT_INT = -this.Operators.Add("<<(int)");
     this.OP_LEFT_SHIFT_UINT = -this.Operators.Add("<<(uint)");
     this.OP_LEFT_SHIFT_LONG = -this.Operators.Add("<<(long)");
     this.OP_LEFT_SHIFT_ULONG = -this.Operators.Add("<<(ulong)");
     this.OP_RIGHT_SHIFT_INT = -this.Operators.Add(">>(int)");
     this.OP_RIGHT_SHIFT_UINT = -this.Operators.Add(">>(uint)");
     this.OP_RIGHT_SHIFT_LONG = -this.Operators.Add(">>(long)");
     this.OP_RIGHT_SHIFT_ULONG = -this.Operators.Add(">>(ulong)");
     this.OP_BITWISE_AND_INT = -this.Operators.Add("&(int)");
     this.OP_BITWISE_AND_UINT = -this.Operators.Add("&(uint)");
     this.OP_BITWISE_AND_LONG = -this.Operators.Add("&(long)");
     this.OP_BITWISE_AND_ULONG = -this.Operators.Add("&(ulong)");
     this.OP_BITWISE_AND_BOOL = -this.Operators.Add("&(bool)");
     this.OP_BITWISE_OR_INT = -this.Operators.Add("|(int)");
     this.OP_BITWISE_OR_UINT = -this.Operators.Add("|(uint)");
     this.OP_BITWISE_OR_LONG = -this.Operators.Add("|(long)");
     this.OP_BITWISE_OR_ULONG = -this.Operators.Add("|(ulong)");
     this.OP_BITWISE_OR_BOOL = -this.Operators.Add("|(bool)");
     this.OP_BITWISE_XOR_INT = -this.Operators.Add("^(int)");
     this.OP_BITWISE_XOR_UINT = -this.Operators.Add("^(uint)");
     this.OP_BITWISE_XOR_LONG = -this.Operators.Add("^(long)");
     this.OP_BITWISE_XOR_ULONG = -this.Operators.Add("^(ulong)");
     this.OP_BITWISE_XOR_BOOL = -this.Operators.Add("^(bool)");
     this.OP_LT_INT = -this.Operators.Add("<(int)");
     this.OP_LT_UINT = -this.Operators.Add("<(uint)");
     this.OP_LT_LONG = -this.Operators.Add("<(long)");
     this.OP_LT_ULONG = -this.Operators.Add("<(ulong)");
     this.OP_LT_FLOAT = -this.Operators.Add("<(float)");
     this.OP_LT_DOUBLE = -this.Operators.Add("<(double)");
     this.OP_LT_DECIMAL = -this.Operators.Add("<(decimal)");
     this.OP_LT_STRING = -this.Operators.Add("<(string)");
     this.OP_LE_INT = -this.Operators.Add("<=(int)");
     this.OP_LE_UINT = -this.Operators.Add("<=(uint)");
     this.OP_LE_LONG = -this.Operators.Add("<=(long)");
     this.OP_LE_ULONG = -this.Operators.Add("<=(ulong)");
     this.OP_LE_FLOAT = -this.Operators.Add("<=(float)");
     this.OP_LE_DOUBLE = -this.Operators.Add("<=(double)");
     this.OP_LE_DECIMAL = -this.Operators.Add("<=(decimal)");
     this.OP_LE_STRING = -this.Operators.Add("<=(string)");
     this.OP_GT_INT = -this.Operators.Add(">(int)");
     this.OP_GT_UINT = -this.Operators.Add(">(uint)");
     this.OP_GT_LONG = -this.Operators.Add(">(long)");
     this.OP_GT_ULONG = -this.Operators.Add(">(ulong)");
     this.OP_GT_FLOAT = -this.Operators.Add(">(float)");
     this.OP_GT_DOUBLE = -this.Operators.Add(">(double)");
     this.OP_GT_DECIMAL = -this.Operators.Add(">(decimal)");
     this.OP_GT_STRING = -this.Operators.Add(">(string)");
     this.OP_GE_INT = -this.Operators.Add(">=(int)");
     this.OP_GE_UINT = -this.Operators.Add(">=(uint)");
     this.OP_GE_LONG = -this.Operators.Add(">=(long)");
     this.OP_GE_ULONG = -this.Operators.Add(">=(ulong)");
     this.OP_GE_FLOAT = -this.Operators.Add(">=(float)");
     this.OP_GE_DOUBLE = -this.Operators.Add(">=(double)");
     this.OP_GE_DECIMAL = -this.Operators.Add(">=(decimal)");
     this.OP_GE_STRING = -this.Operators.Add(">=(string)");
     this.OP_EQ_INT = -this.Operators.Add("==(int)");
     this.OP_EQ_UINT = -this.Operators.Add("==(uint)");
     this.OP_EQ_LONG = -this.Operators.Add("==(long)");
     this.OP_EQ_ULONG = -this.Operators.Add("==(ulong)");
     this.OP_EQ_FLOAT = -this.Operators.Add("==(float)");
     this.OP_EQ_DOUBLE = -this.Operators.Add("==(double)");
     this.OP_EQ_DECIMAL = -this.Operators.Add("==(decimal)");
     this.OP_EQ_STRING = -this.Operators.Add("==(string)");
     this.OP_EQ_BOOL = -this.Operators.Add("==(bool)");
     this.OP_EQ_OBJECT = -this.Operators.Add("==(object)");
     this.OP_NE_INT = -this.Operators.Add("!=(int)");
     this.OP_NE_UINT = -this.Operators.Add("!=(uint)");
     this.OP_NE_LONG = -this.Operators.Add("!=(long)");
     this.OP_NE_ULONG = -this.Operators.Add("!=(ulong)");
     this.OP_NE_FLOAT = -this.Operators.Add("!=(float)");
     this.OP_NE_DOUBLE = -this.Operators.Add("!=(double)");
     this.OP_NE_DECIMAL = -this.Operators.Add("!=(decimal)");
     this.OP_NE_STRING = -this.Operators.Add("!=(string)");
     this.OP_NE_BOOL = -this.Operators.Add("!=(bool)");
     this.OP_NE_OBJECT = -this.Operators.Add("!=(object)");
     this.OP_SWAPPED_ARGUMENTS = -this.Operators.Add("SWAPPED ARG");
     this.overloadable_unary_operators_str = new Hashtable();
     this.overloadable_unary_operators_str.Add(this.OP_UNARY_PLUS, "op_UnaryPlus");
     this.overloadable_unary_operators_str.Add(this.OP_UNARY_MINUS, "op_UnaryNegation");
     this.overloadable_unary_operators_str.Add(this.OP_NOT, "op_LogicalNot");
     this.overloadable_unary_operators_str.Add(this.OP_COMPLEMENT, "op_OnesComplement");
     this.overloadable_unary_operators_str.Add(this.OP_INC, "op_Increment");
     this.overloadable_unary_operators_str.Add(this.OP_DEC, "op_Decrement");
     this.overloadable_unary_operators_str.Add(this.OP_TRUE, "op_True");
     this.overloadable_unary_operators_str.Add(this.OP_FALSE, "op_False");
     this.overloadable_binary_operators_str = new Hashtable();
     this.overloadable_binary_operators_str.Add(this.OP_PLUS, "op_Addition");
     this.overloadable_binary_operators_str.Add(this.OP_MINUS, "op_Subtraction");
     this.overloadable_binary_operators_str.Add(this.OP_MULT, "op_Multiply");
     this.overloadable_binary_operators_str.Add(this.OP_DIV, "op_Division");
     this.overloadable_binary_operators_str.Add(this.OP_MOD, "op_Modulus");
     this.overloadable_binary_operators_str.Add(this.OP_BITWISE_AND, "op_BitwiseAnd");
     this.overloadable_binary_operators_str.Add(this.OP_BITWISE_OR, "op_BitwiseOr");
     this.overloadable_binary_operators_str.Add(this.OP_BITWISE_XOR, "op_ExclusiveOr");
     this.overloadable_binary_operators_str.Add(this.OP_LEFT_SHIFT, "op_LeftShift");
     this.overloadable_binary_operators_str.Add(this.OP_RIGHT_SHIFT, "op_RightShift");
     this.overloadable_binary_operators_str.Add(this.OP_EQ, "op_Equality");
     this.overloadable_binary_operators_str.Add(this.OP_NE, "op_Inequality");
     this.overloadable_binary_operators_str.Add(this.OP_GT, "op_GreaterThan");
     this.overloadable_binary_operators_str.Add(this.OP_LT, "op_LessThan");
     this.overloadable_binary_operators_str.Add(this.OP_GE, "op_GreaterThanOrEqual");
     this.overloadable_binary_operators_str.Add(this.OP_LE, "op_LessThanOrEqual");
     this.detailed_operators = new Contact_Integers(200);
     this.detailed_negation_operators = new Contact_Integers(5);
     this.detailed_negation_operators.Add(8, this.OP_NEGATION_INT);
     this.detailed_negation_operators.Add(9, this.OP_NEGATION_LONG);
     this.detailed_negation_operators.Add(7, this.OP_NEGATION_FLOAT);
     this.detailed_negation_operators.Add(6, this.OP_NEGATION_DOUBLE);
     this.detailed_negation_operators.Add(5, this.OP_NEGATION_DECIMAL);
     this.detailed_operators.AddFrom(this.detailed_negation_operators);
     this.detailed_logical_negation_operators = new Contact_Integers(1);
     this.detailed_logical_negation_operators.Add(2, this.OP_LOGICAL_NEGATION_BOOL);
     this.detailed_operators.AddFrom(this.detailed_logical_negation_operators);
     this.detailed_bitwise_complement_operators = new Contact_Integers(4);
     this.detailed_bitwise_complement_operators.Add(8, this.OP_BITWISE_COMPLEMENT_INT);
     this.detailed_bitwise_complement_operators.Add(13, this.OP_BITWISE_COMPLEMENT_UINT);
     this.detailed_bitwise_complement_operators.Add(9, this.OP_BITWISE_COMPLEMENT_LONG);
     this.detailed_bitwise_complement_operators.Add(14, this.OP_BITWISE_COMPLEMENT_ULONG);
     this.detailed_operators.AddFrom(this.detailed_bitwise_complement_operators);
     this.detailed_inc_operators = new Contact_Integers(12);
     this.detailed_inc_operators.Add(10, this.OP_INC_SBYTE);
     this.detailed_inc_operators.Add(3, this.OP_INC_BYTE);
     this.detailed_inc_operators.Add(11, this.OP_INC_SHORT);
     this.detailed_inc_operators.Add(15, this.OP_INC_USHORT);
     this.detailed_inc_operators.Add(8, this.OP_INC_INT);
     this.detailed_inc_operators.Add(13, this.OP_INC_UINT);
     this.detailed_inc_operators.Add(9, this.OP_INC_LONG);
     this.detailed_inc_operators.Add(14, this.OP_INC_ULONG);
     this.detailed_inc_operators.Add(4, this.OP_INC_CHAR);
     this.detailed_inc_operators.Add(7, this.OP_INC_FLOAT);
     this.detailed_inc_operators.Add(6, this.OP_INC_DOUBLE);
     this.detailed_inc_operators.Add(5, this.OP_INC_DECIMAL);
     this.detailed_operators.AddFrom(this.detailed_inc_operators);
     this.detailed_dec_operators = new Contact_Integers(12);
     this.detailed_dec_operators.Add(10, this.OP_DEC_SBYTE);
     this.detailed_dec_operators.Add(3, this.OP_DEC_BYTE);
     this.detailed_dec_operators.Add(11, this.OP_DEC_SHORT);
     this.detailed_dec_operators.Add(15, this.OP_DEC_USHORT);
     this.detailed_dec_operators.Add(8, this.OP_DEC_INT);
     this.detailed_dec_operators.Add(13, this.OP_DEC_UINT);
     this.detailed_dec_operators.Add(9, this.OP_DEC_LONG);
     this.detailed_dec_operators.Add(14, this.OP_DEC_ULONG);
     this.detailed_dec_operators.Add(4, this.OP_DEC_CHAR);
     this.detailed_dec_operators.Add(7, this.OP_DEC_FLOAT);
     this.detailed_dec_operators.Add(6, this.OP_DEC_DOUBLE);
     this.detailed_dec_operators.Add(5, this.OP_DEC_DECIMAL);
     this.detailed_operators.AddFrom(this.detailed_dec_operators);
     this.detailed_addition_operators = new Contact_Integers(8);
     this.detailed_addition_operators.Add(8, this.OP_ADDITION_INT);
     this.detailed_addition_operators.Add(13, this.OP_ADDITION_UINT);
     this.detailed_addition_operators.Add(9, this.OP_ADDITION_LONG);
     this.detailed_addition_operators.Add(14, this.OP_ADDITION_ULONG);
     this.detailed_addition_operators.Add(7, this.OP_ADDITION_FLOAT);
     this.detailed_addition_operators.Add(6, this.OP_ADDITION_DOUBLE);
     this.detailed_addition_operators.Add(5, this.OP_ADDITION_DECIMAL);
     this.detailed_addition_operators.Add(12, this.OP_ADDITION_STRING);
     this.detailed_operators.AddFrom(this.detailed_addition_operators);
     this.detailed_subtraction_operators = new Contact_Integers(7);
     this.detailed_subtraction_operators.Add(8, this.OP_SUBTRACTION_INT);
     this.detailed_subtraction_operators.Add(13, this.OP_SUBTRACTION_UINT);
     this.detailed_subtraction_operators.Add(9, this.OP_SUBTRACTION_LONG);
     this.detailed_subtraction_operators.Add(14, this.OP_SUBTRACTION_ULONG);
     this.detailed_subtraction_operators.Add(7, this.OP_SUBTRACTION_FLOAT);
     this.detailed_subtraction_operators.Add(6, this.OP_SUBTRACTION_DOUBLE);
     this.detailed_subtraction_operators.Add(5, this.OP_SUBTRACTION_DECIMAL);
     this.detailed_operators.AddFrom(this.detailed_subtraction_operators);
     this.detailed_multiplication_operators = new Contact_Integers(7);
     this.detailed_multiplication_operators.Add(8, this.OP_MULTIPLICATION_INT);
     this.detailed_multiplication_operators.Add(13, this.OP_MULTIPLICATION_UINT);
     this.detailed_multiplication_operators.Add(9, this.OP_MULTIPLICATION_LONG);
     this.detailed_multiplication_operators.Add(14, this.OP_MULTIPLICATION_ULONG);
     this.detailed_multiplication_operators.Add(7, this.OP_MULTIPLICATION_FLOAT);
     this.detailed_multiplication_operators.Add(6, this.OP_MULTIPLICATION_DOUBLE);
     this.detailed_multiplication_operators.Add(5, this.OP_MULTIPLICATION_DECIMAL);
     this.detailed_operators.AddFrom(this.detailed_multiplication_operators);
     this.detailed_exponent_operators = new Contact_Integers(7);
     this.detailed_exponent_operators.Add(8, this.OP_EXPONENT_INT);
     this.detailed_exponent_operators.Add(13, this.OP_EXPONENT_UINT);
     this.detailed_exponent_operators.Add(9, this.OP_EXPONENT_LONG);
     this.detailed_exponent_operators.Add(14, this.OP_EXPONENT_ULONG);
     this.detailed_exponent_operators.Add(7, this.OP_EXPONENT_FLOAT);
     this.detailed_exponent_operators.Add(6, this.OP_EXPONENT_DOUBLE);
     this.detailed_exponent_operators.Add(5, this.OP_EXPONENT_DECIMAL);
     this.detailed_operators.AddFrom(this.detailed_exponent_operators);
     this.detailed_division_operators = new Contact_Integers(7);
     this.detailed_division_operators.Add(8, this.OP_DIVISION_INT);
     this.detailed_division_operators.Add(13, this.OP_DIVISION_UINT);
     this.detailed_division_operators.Add(9, this.OP_DIVISION_LONG);
     this.detailed_division_operators.Add(14, this.OP_DIVISION_ULONG);
     this.detailed_division_operators.Add(7, this.OP_DIVISION_FLOAT);
     this.detailed_division_operators.Add(6, this.OP_DIVISION_DOUBLE);
     this.detailed_division_operators.Add(5, this.OP_DIVISION_DECIMAL);
     this.detailed_operators.AddFrom(this.detailed_division_operators);
     this.detailed_remainder_operators = new Contact_Integers(7);
     this.detailed_remainder_operators.Add(8, this.OP_REMAINDER_INT);
     this.detailed_remainder_operators.Add(13, this.OP_REMAINDER_UINT);
     this.detailed_remainder_operators.Add(9, this.OP_REMAINDER_LONG);
     this.detailed_remainder_operators.Add(14, this.OP_REMAINDER_ULONG);
     this.detailed_remainder_operators.Add(7, this.OP_REMAINDER_FLOAT);
     this.detailed_remainder_operators.Add(6, this.OP_REMAINDER_DOUBLE);
     this.detailed_remainder_operators.Add(5, this.OP_REMAINDER_DECIMAL);
     this.detailed_operators.AddFrom(this.detailed_remainder_operators);
     this.detailed_left_shift_operators = new Contact_Integers(4);
     this.detailed_left_shift_operators.Add(8, this.OP_LEFT_SHIFT_INT);
     this.detailed_left_shift_operators.Add(13, this.OP_LEFT_SHIFT_UINT);
     this.detailed_left_shift_operators.Add(9, this.OP_LEFT_SHIFT_LONG);
     this.detailed_left_shift_operators.Add(14, this.OP_LEFT_SHIFT_ULONG);
     this.detailed_operators.AddFrom(this.detailed_left_shift_operators);
     this.detailed_right_shift_operators = new Contact_Integers(4);
     this.detailed_right_shift_operators.Add(8, this.OP_RIGHT_SHIFT_INT);
     this.detailed_right_shift_operators.Add(13, this.OP_RIGHT_SHIFT_UINT);
     this.detailed_right_shift_operators.Add(9, this.OP_RIGHT_SHIFT_LONG);
     this.detailed_right_shift_operators.Add(14, this.OP_RIGHT_SHIFT_ULONG);
     this.detailed_operators.AddFrom(this.detailed_right_shift_operators);
     this.detailed_bitwise_and_operators = new Contact_Integers(5);
     this.detailed_bitwise_and_operators.Add(8, this.OP_BITWISE_AND_INT);
     this.detailed_bitwise_and_operators.Add(13, this.OP_BITWISE_AND_UINT);
     this.detailed_bitwise_and_operators.Add(9, this.OP_BITWISE_AND_LONG);
     this.detailed_bitwise_and_operators.Add(14, this.OP_BITWISE_AND_ULONG);
     this.detailed_bitwise_and_operators.Add(2, this.OP_BITWISE_AND_BOOL);
     this.detailed_operators.AddFrom(this.detailed_bitwise_and_operators);
     this.detailed_bitwise_or_operators = new Contact_Integers(5);
     this.detailed_bitwise_or_operators.Add(8, this.OP_BITWISE_OR_INT);
     this.detailed_bitwise_or_operators.Add(13, this.OP_BITWISE_OR_UINT);
     this.detailed_bitwise_or_operators.Add(9, this.OP_BITWISE_OR_LONG);
     this.detailed_bitwise_or_operators.Add(14, this.OP_BITWISE_OR_ULONG);
     this.detailed_bitwise_or_operators.Add(2, this.OP_BITWISE_OR_BOOL);
     this.detailed_operators.AddFrom(this.detailed_bitwise_or_operators);
     this.detailed_bitwise_xor_operators = new Contact_Integers(5);
     this.detailed_bitwise_xor_operators.Add(8, this.OP_BITWISE_XOR_INT);
     this.detailed_bitwise_xor_operators.Add(13, this.OP_BITWISE_XOR_UINT);
     this.detailed_bitwise_xor_operators.Add(9, this.OP_BITWISE_XOR_LONG);
     this.detailed_bitwise_xor_operators.Add(14, this.OP_BITWISE_XOR_ULONG);
     this.detailed_bitwise_xor_operators.Add(2, this.OP_BITWISE_XOR_BOOL);
     this.detailed_operators.AddFrom(this.detailed_bitwise_xor_operators);
     this.detailed_lt_operators = new Contact_Integers(8);
     this.detailed_lt_operators.Add(8, this.OP_LT_INT);
     this.detailed_lt_operators.Add(13, this.OP_LT_UINT);
     this.detailed_lt_operators.Add(9, this.OP_LT_LONG);
     this.detailed_lt_operators.Add(14, this.OP_LT_ULONG);
     this.detailed_lt_operators.Add(7, this.OP_LT_FLOAT);
     this.detailed_lt_operators.Add(6, this.OP_LT_DOUBLE);
     this.detailed_lt_operators.Add(5, this.OP_LT_DECIMAL);
     this.detailed_lt_operators.Add(12, this.OP_LT_STRING);
     this.detailed_operators.AddFrom(this.detailed_lt_operators);
     this.detailed_le_operators = new Contact_Integers(8);
     this.detailed_le_operators.Add(8, this.OP_LE_INT);
     this.detailed_le_operators.Add(13, this.OP_LE_UINT);
     this.detailed_le_operators.Add(9, this.OP_LE_LONG);
     this.detailed_le_operators.Add(14, this.OP_LE_ULONG);
     this.detailed_le_operators.Add(7, this.OP_LE_FLOAT);
     this.detailed_le_operators.Add(6, this.OP_LE_DOUBLE);
     this.detailed_le_operators.Add(5, this.OP_LE_DECIMAL);
     this.detailed_le_operators.Add(12, this.OP_LE_STRING);
     this.detailed_operators.AddFrom(this.detailed_le_operators);
     this.detailed_gt_operators = new Contact_Integers(8);
     this.detailed_gt_operators.Add(8, this.OP_GT_INT);
     this.detailed_gt_operators.Add(13, this.OP_GT_UINT);
     this.detailed_gt_operators.Add(9, this.OP_GT_LONG);
     this.detailed_gt_operators.Add(14, this.OP_GT_ULONG);
     this.detailed_gt_operators.Add(7, this.OP_GT_FLOAT);
     this.detailed_gt_operators.Add(6, this.OP_GT_DOUBLE);
     this.detailed_gt_operators.Add(5, this.OP_GT_DECIMAL);
     this.detailed_gt_operators.Add(12, this.OP_GT_STRING);
     this.detailed_operators.AddFrom(this.detailed_gt_operators);
     this.detailed_ge_operators = new Contact_Integers(8);
     this.detailed_ge_operators.Add(8, this.OP_GE_INT);
     this.detailed_ge_operators.Add(13, this.OP_GE_UINT);
     this.detailed_ge_operators.Add(9, this.OP_GE_LONG);
     this.detailed_ge_operators.Add(14, this.OP_GE_ULONG);
     this.detailed_ge_operators.Add(7, this.OP_GE_FLOAT);
     this.detailed_ge_operators.Add(6, this.OP_GE_DOUBLE);
     this.detailed_ge_operators.Add(5, this.OP_GE_DECIMAL);
     this.detailed_ge_operators.Add(12, this.OP_GE_STRING);
     this.detailed_operators.AddFrom(this.detailed_ge_operators);
     this.detailed_eq_operators = new Contact_Integers(10);
     this.detailed_eq_operators.Add(8, this.OP_EQ_INT);
     this.detailed_eq_operators.Add(13, this.OP_EQ_UINT);
     this.detailed_eq_operators.Add(9, this.OP_EQ_LONG);
     this.detailed_eq_operators.Add(14, this.OP_EQ_ULONG);
     this.detailed_eq_operators.Add(7, this.OP_EQ_FLOAT);
     this.detailed_eq_operators.Add(6, this.OP_EQ_DOUBLE);
     this.detailed_eq_operators.Add(5, this.OP_EQ_DECIMAL);
     this.detailed_eq_operators.Add(12, this.OP_EQ_STRING);
     this.detailed_eq_operators.Add(2, this.OP_EQ_BOOL);
     this.detailed_eq_operators.Add(0x10, this.OP_EQ_OBJECT);
     this.detailed_operators.AddFrom(this.detailed_eq_operators);
     this.detailed_ne_operators = new Contact_Integers(10);
     this.detailed_ne_operators.Add(8, this.OP_NE_INT);
     this.detailed_ne_operators.Add(13, this.OP_NE_UINT);
     this.detailed_ne_operators.Add(9, this.OP_NE_LONG);
     this.detailed_ne_operators.Add(14, this.OP_NE_ULONG);
     this.detailed_ne_operators.Add(7, this.OP_NE_FLOAT);
     this.detailed_ne_operators.Add(6, this.OP_NE_DOUBLE);
     this.detailed_ne_operators.Add(5, this.OP_NE_DECIMAL);
     this.detailed_ne_operators.Add(12, this.OP_NE_STRING);
     this.detailed_ne_operators.Add(2, this.OP_NE_BOOL);
     this.detailed_ne_operators.Add(0x10, this.OP_NE_OBJECT);
     this.detailed_operators.AddFrom(this.detailed_ne_operators);
     this.stack = new ObjectStack();
     this.state_stack = new IntegerStack();
     this.try_stack = new TryStack();
     this.checked_stack = new ObjectStack();
     this.custom_ex_list = new CSLite_TypedList(false);
     this.breakpoint_list = new BreakpointList(scripter);
     this.callstack = new CallStack(scripter);
     this.resume_stack = new IntegerStack();
     this.get_item_list = new ArrayList();
     this.arrProc = new ArrayList();
     for (num = 0; num < 0x3e8; num++)
     {
         this.arrProc.Add(null);
     }
     this.arrProc[-this.OP_BEGIN_MODULE] = new Oper(this.OperNop);
     this.arrProc[-this.OP_END_MODULE] = new Oper(this.OperNop);
     this.arrProc[-this.OP_CHECKED] = new Oper(this.OperChecked);
     this.arrProc[-this.OP_RESTORE_CHECKED_STATE] = new Oper(this.OperRestoreCheckedState);
     this.arrProc[-this.OP_LOCK] = new Oper(this.OperLock);
     this.arrProc[-this.OP_UNLOCK] = new Oper(this.OperUnlock);
     this.arrProc[-this.OP_DISPOSE] = new Oper(this.OperDispose);
     this.arrProc[-this.OP_TYPEOF] = new Oper(this.OperTypeOf);
     this.arrProc[-this.OP_CREATE_CLASS] = new Oper(this.OperCreateClass);
     this.arrProc[-this.OP_END_CLASS] = new Oper(this.OperNop);
     this.arrProc[-this.OP_CREATE_OBJECT] = new Oper(this.OperCreateObject);
     this.arrProc[-this.OP_CREATE_REFERENCE] = new Oper(this.OperCreateReference);
     this.arrProc[-this.OP_CREATE_ARRAY_INSTANCE] = new Oper(this.OperCreateArrayInstance);
     this.arrProc[-this.OP_SETUP_DELEGATE] = new Oper(this.OperSetupDelegate);
     this.arrProc[-this.OP_ADD_DELEGATES] = new Oper(this.OperAddDelegates);
     this.arrProc[-this.OP_SUB_DELEGATES] = new Oper(this.OperSubDelegates);
     this.arrProc[-this.OP_EQ_DELEGATES] = new Oper(this.OperEqDelegates);
     this.arrProc[-this.OP_NE_DELEGATES] = new Oper(this.OperNeDelegates);
     this.arrProc[-this.OP_ADDRESS_OF] = new Oper(this.OperNop);
     this.arrProc[-this.OP_CREATE_INDEX_OBJECT] = new Oper(this.OperCreateIndexObject);
     this.arrProc[-this.OP_ADD_INDEX] = new Oper(this.OperAddIndex);
     this.arrProc[-this.OP_SETUP_INDEX_OBJECT] = new Oper(this.OperSetupIndexObject);
     this.arrProc[-this.OP_CREATE_TYPE_REFERENCE] = new Oper(this.OperNop);
     this.arrProc[-this.OP_CREATE_FIELD] = new Oper(this.OperCreateField);
     this.arrProc[-this.OP_CREATE_PROPERTY] = new Oper(this.OperCreateProperty);
     this.arrProc[-this.OP_CREATE_EVENT] = new Oper(this.OperCreateEvent);
     this.arrProc[-this.OP_CREATE_NAMESPACE] = new Oper(this.OperCreateNamespace);
     this.arrProc[-this.OP_BEGIN_USING] = new Oper(this.OperNop);
     this.arrProc[-this.OP_END_USING] = new Oper(this.OperNop);
     this.arrProc[-this.OP_ADD_MODIFIER] = new Oper(this.OperAddModifier);
     this.arrProc[-this.OP_ADD_ANCESTOR] = new Oper(this.OperNop);
     this.arrProc[-this.OP_ADD_UNDERLYING_TYPE] = new Oper(this.OperNop);
     this.arrProc[-this.OP_ADD_READ_ACCESSOR] = new Oper(this.OperAddReadAccessor);
     this.arrProc[-this.OP_ADD_WRITE_ACCESSOR] = new Oper(this.OperAddWriteAccessor);
     this.arrProc[-this.OP_SET_DEFAULT] = new Oper(this.OperSetDefault);
     this.arrProc[-this.OP_ADD_ADD_ACCESSOR] = new Oper(this.OperAddAddAccessor);
     this.arrProc[-this.OP_ADD_REMOVE_ACCESSOR] = new Oper(this.OperAddRemoveAccessor);
     this.arrProc[-this.OP_ADD_PATTERN] = new Oper(this.OperAddPattern);
     this.arrProc[-this.OP_ADD_IMPLEMENTS] = new Oper(this.OperNop);
     this.arrProc[-this.OP_ADD_HANDLES] = new Oper(this.OperNop);
     this.arrProc[-this.OP_ADD_MIN_VALUE] = new Oper(this.OperNop);
     this.arrProc[-this.OP_ADD_MAX_VALUE] = new Oper(this.OperNop);
     this.arrProc[-this.OP_ADD_ARRAY_RANGE] = new Oper(this.OperNop);
     this.arrProc[-this.OP_ADD_ARRAY_INDEX] = new Oper(this.OperNop);
     this.arrProc[-this.OP_BEGIN_CALL] = new Oper(this.OperNop);
     this.arrProc[-this.OP_ASSIGN_TYPE] = new Oper(this.OperNop);
     this.arrProc[-this.OP_ASSIGN_COND_TYPE] = new Oper(this.OperNop);
     this.arrProc[-this.OP_CREATE_USING_ALIAS] = new Oper(this.OperCreateUsingAlias);
     this.arrProc[-this.OP_CREATE_REF_TYPE] = new Oper(this.OperNop);
     this.arrProc[-this.OP_SET_REF_TYPE] = new Oper(this.OperNop);
     this.arrProc[-this.OP_EVAL] = new Oper(this.OperNop);
     this.arrProc[-this.OP_EVAL_TYPE] = new Oper(this.OperNop);
     this.arrProc[-this.OP_EVAL_BASE_TYPE] = new Oper(this.OperNop);
     this.arrProc[-this.OP_ASSIGN_NAME] = new Oper(this.OperNop);
     this.arrProc[-this.OP_NOP] = new Oper(this.OperNop);
     this.arrProc[-this.OP_INIT_STATIC_VAR] = new Oper(this.OperNop);
     this.arrProc[-this.OP_LABEL] = new Oper(this.OperNop);
     this.arrProc[-this.OP_ASSIGN] = new Oper(this.OperAssign);
     this.arrProc[-this.OP_ASSIGN_STRUCT] = new Oper(this.OperAssignStruct);
     this.arrProc[-this.OP_PLUS] = new Oper(this.OperPlus);
     this.arrProc[-this.OP_INC] = new Oper(this.OperPlus);
     this.arrProc[-this.OP_MINUS] = new Oper(this.OperMinus);
     this.arrProc[-this.OP_DEC] = new Oper(this.OperMinus);
     this.arrProc[-this.OP_MULT] = new Oper(this.OperMult);
     this.arrProc[-this.OP_EXPONENT] = new Oper(this.OperExp);
     this.arrProc[-this.OP_DIV] = new Oper(this.OperDiv);
     this.arrProc[-this.OP_EQ] = new Oper(this.OperEq);
     this.arrProc[-this.OP_NE] = new Oper(this.OperNe);
     this.arrProc[-this.OP_GT] = new Oper(this.OperGt);
     this.arrProc[-this.OP_GE] = new Oper(this.OperGe);
     this.arrProc[-this.OP_LT] = new Oper(this.OperLt);
     this.arrProc[-this.OP_LE] = new Oper(this.OperLe);
     this.arrProc[-this.OP_IS] = new Oper(this.OperIs);
     this.arrProc[-this.OP_AS] = new Oper(this.OperAs);
     this.arrProc[-this.OP_UPCASE_ON] = new Oper(this.OperNop);
     this.arrProc[-this.OP_UPCASE_OFF] = new Oper(this.OperNop);
     this.arrProc[-this.OP_EXPLICIT_ON] = new Oper(this.OperNop);
     this.arrProc[-this.OP_EXPLICIT_OFF] = new Oper(this.OperNop);
     this.arrProc[-this.OP_STRICT_ON] = new Oper(this.OperNop);
     this.arrProc[-this.OP_STRICT_OFF] = new Oper(this.OperNop);
     this.arrProc[-this.OP_HALT] = new Oper(this.OperHalt);
     this.arrProc[-this.OP_PRINT] = new Oper(this.OperPrint);
     this.arrProc[-this.OP_GO] = new Oper(this.OperGo);
     this.arrProc[-this.OP_GO_FALSE] = new Oper(this.OperGoFalse);
     this.arrProc[-this.OP_GO_TRUE] = new Oper(this.OperGoTrue);
     this.arrProc[-this.OP_GO_NULL] = new Oper(this.OperGoNull);
     this.arrProc[-this.OP_GOTO_START] = new Oper(this.OperGotoStart);
     this.arrProc[-this.OP_GOTO_CONTINUE] = new Oper(this.OperGotoContinue);
     this.arrProc[-this.OP_CREATE_METHOD] = new Oper(this.OperCreateMethod);
     this.arrProc[-this.OP_ADD_EXPLICIT_INTERFACE] = new Oper(this.OperAddExplicitInterface);
     this.arrProc[-this.OP_ADD_PARAM] = new Oper(this.OperAddParam);
     this.arrProc[-this.OP_ADD_PARAMS] = new Oper(this.OperAddParams);
     this.arrProc[-this.OP_ADD_DEFAULT_VALUE] = new Oper(this.OperAddDefaultValue);
     this.arrProc[-this.OP_INIT_METHOD] = new Oper(this.OperInitMethod);
     this.arrProc[-this.OP_DECLARE_LOCAL_VARIABLE] = new Oper(this.OperDeclareLocalVariable);
     this.arrProc[-this.OP_DECLARE_LOCAL_VARIABLE_RUNTIME] = new Oper(this.OperNop);
     this.arrProc[-this.OP_DECLARE_LOCAL_SIMPLE] = new Oper(this.OperNop);
     this.arrProc[-this.OP_END_METHOD] = new Oper(this.OperEndMethod);
     this.arrProc[-this.OP_ADD_EVENT_FIELD] = new Oper(this.OperAddEventField);
     this.arrProc[-this.OP_CALL] = new Oper(this.OperCall);
     this.arrProc[-this.OP_CALL_BASE] = new Oper(this.OperCallBase);
     this.arrProc[-this.OP_CALL_SIMPLE] = new Oper(this.OperCall);
     this.arrProc[-this.OP_CALL_VIRT] = new Oper(this.OperCallVirt);
     this.arrProc[-this.OP_DYNAMIC_INVOKE] = new Oper(this.OperDynamicInvoke);
     this.arrProc[-this.OP_CHECK_STRUCT_CONSTRUCTOR] = new Oper(this.OperNop);
     this.arrProc[-this.OP_INSERT_STRUCT_CONSTRUCTORS] = new Oper(this.OperNop);
     this.arrProc[-this.OP_CALL_ADD_EVENT] = new Oper(this.OperCallAddEvent);
     this.arrProc[-this.OP_RAISE_EVENT] = new Oper(this.OperNop);
     this.arrProc[-this.OP_FIND_FIRST_DELEGATE] = new Oper(this.OperFindFirstDelegate);
     this.arrProc[-this.OP_FIND_NEXT_DELEGATE] = new Oper(this.OperFindNextDelegate);
     this.arrProc[-this.OP_PUSH] = new Oper(this.OperPush);
     this.arrProc[-this.OP_RET] = new Oper(this.OperRet);
     this.arrProc[-this.OP_EXIT_SUB] = new Oper(this.OperExitSub);
     this.arrProc[-this.OP_GET_PARAM_VALUE] = new Oper(this.OperGetParamValue);
     this.arrProc[-this.OP_CAST] = new Oper(this.OperCast);
     this.arrProc[-this.OP_TO_SBYTE] = new Oper(this.OperToSbyte);
     this.arrProc[-this.OP_TO_BYTE] = new Oper(this.OperToByte);
     this.arrProc[-this.OP_TO_USHORT] = new Oper(this.OperToUshort);
     this.arrProc[-this.OP_TO_SHORT] = new Oper(this.OperToShort);
     this.arrProc[-this.OP_TO_UINT] = new Oper(this.OperToUint);
     this.arrProc[-this.OP_TO_INT] = new Oper(this.OperToInt);
     this.arrProc[-this.OP_TO_ULONG] = new Oper(this.OperToUlong);
     this.arrProc[-this.OP_TO_LONG] = new Oper(this.OperToLong);
     this.arrProc[-this.OP_TO_CHAR] = new Oper(this.OperToChar);
     this.arrProc[-this.OP_TO_FLOAT] = new Oper(this.OperToFloat);
     this.arrProc[-this.OP_TO_DOUBLE] = new Oper(this.OperToDouble);
     this.arrProc[-this.OP_TO_DECIMAL] = new Oper(this.OperToDecimal);
     this.arrProc[-this.OP_TO_STRING] = new Oper(this.OperToString);
     this.arrProc[-this.OP_TO_BOOLEAN] = new Oper(this.OperToBoolean);
     this.arrProc[-this.OP_TO_ENUM] = new Oper(this.OperToEnum);
     this.arrProc[-this.OP_TO_CHAR_ARRAY] = new Oper(this.OperToCharArray);
     this.arrProc[-this.OP_TRY_ON] = new Oper(this.OperTryOn);
     this.arrProc[-this.OP_TRY_OFF] = new Oper(this.OperTryOff);
     this.arrProc[-this.OP_THROW] = new Oper(this.OperThrow);
     this.arrProc[-this.OP_CATCH] = new Oper(this.OperCatch);
     this.arrProc[-this.OP_FINALLY] = new Oper(this.OperFinally);
     this.arrProc[-this.OP_DISCARD_ERROR] = new Oper(this.OperDiscardError);
     this.arrProc[-this.OP_EXIT_ON_ERROR] = new Oper(this.OperExitOnError);
     this.arrProc[-this.OP_ONERROR] = new Oper(this.OperOnError);
     this.arrProc[-this.OP_RESUME] = new Oper(this.OperResume);
     this.arrProc[-this.OP_RESUME_NEXT] = new Oper(this.OperResumeNext);
     this.arrProc[-this.OP_SEPARATOR] = new Oper(this.OperNop);
     this.arrProc[-this.OP_DEFINE] = new Oper(this.OperNop);
     this.arrProc[-this.OP_UNDEF] = new Oper(this.OperNop);
     this.arrProc[-this.OP_START_REGION] = new Oper(this.OperNop);
     this.arrProc[-this.OP_END_REGION] = new Oper(this.OperNop);
     this.arrProc[-this.OP_NEGATION_INT] = new Oper(this.OperNegationInt);
     this.arrProc[-this.OP_NEGATION_LONG] = new Oper(this.OperNegationLong);
     this.arrProc[-this.OP_NEGATION_FLOAT] = new Oper(this.OperNegationFloat);
     this.arrProc[-this.OP_NEGATION_DOUBLE] = new Oper(this.OperNegationDouble);
     this.arrProc[-this.OP_NEGATION_DECIMAL] = new Oper(this.OperNegationDecimal);
     this.arrProc[-this.OP_LOGICAL_NEGATION_BOOL] = new Oper(this.OperLogicalNegationBool);
     this.arrProc[-this.OP_BITWISE_COMPLEMENT_INT] = new Oper(this.OperBitwiseComplementInt);
     this.arrProc[-this.OP_BITWISE_COMPLEMENT_UINT] = new Oper(this.OperBitwiseComplementUint);
     this.arrProc[-this.OP_BITWISE_COMPLEMENT_LONG] = new Oper(this.OperBitwiseComplementLong);
     this.arrProc[-this.OP_BITWISE_COMPLEMENT_ULONG] = new Oper(this.OperBitwiseComplementUlong);
     this.arrProc[-this.OP_INC_SBYTE] = new Oper(this.OperIncSbyte);
     this.arrProc[-this.OP_INC_BYTE] = new Oper(this.OperIncByte);
     this.arrProc[-this.OP_INC_SHORT] = new Oper(this.OperIncShort);
     this.arrProc[-this.OP_INC_USHORT] = new Oper(this.OperIncUshort);
     this.arrProc[-this.OP_INC_INT] = new Oper(this.OperIncInt);
     this.arrProc[-this.OP_INC_UINT] = new Oper(this.OperIncUint);
     this.arrProc[-this.OP_INC_LONG] = new Oper(this.OperIncLong);
     this.arrProc[-this.OP_INC_ULONG] = new Oper(this.OperIncUlong);
     this.arrProc[-this.OP_INC_CHAR] = new Oper(this.OperIncChar);
     this.arrProc[-this.OP_INC_FLOAT] = new Oper(this.OperIncFloat);
     this.arrProc[-this.OP_INC_DOUBLE] = new Oper(this.OperIncDouble);
     this.arrProc[-this.OP_INC_DECIMAL] = new Oper(this.OperIncDecimal);
     this.arrProc[-this.OP_DEC_SBYTE] = new Oper(this.OperDecSbyte);
     this.arrProc[-this.OP_DEC_BYTE] = new Oper(this.OperDecByte);
     this.arrProc[-this.OP_DEC_SHORT] = new Oper(this.OperDecShort);
     this.arrProc[-this.OP_DEC_USHORT] = new Oper(this.OperDecUshort);
     this.arrProc[-this.OP_DEC_INT] = new Oper(this.OperDecInt);
     this.arrProc[-this.OP_DEC_UINT] = new Oper(this.OperDecUint);
     this.arrProc[-this.OP_DEC_LONG] = new Oper(this.OperDecLong);
     this.arrProc[-this.OP_DEC_ULONG] = new Oper(this.OperDecUlong);
     this.arrProc[-this.OP_DEC_CHAR] = new Oper(this.OperDecChar);
     this.arrProc[-this.OP_DEC_FLOAT] = new Oper(this.OperDecFloat);
     this.arrProc[-this.OP_DEC_DOUBLE] = new Oper(this.OperDecDouble);
     this.arrProc[-this.OP_DEC_DECIMAL] = new Oper(this.OperDecDecimal);
     this.arrProc[-this.OP_ADDITION_INT] = new Oper(this.OperAdditionInt);
     this.arrProc[-this.OP_ADDITION_UINT] = new Oper(this.OperAdditionUint);
     this.arrProc[-this.OP_ADDITION_LONG] = new Oper(this.OperAdditionLong);
     this.arrProc[-this.OP_ADDITION_ULONG] = new Oper(this.OperAdditionUlong);
     this.arrProc[-this.OP_ADDITION_FLOAT] = new Oper(this.OperAdditionFloat);
     this.arrProc[-this.OP_ADDITION_DOUBLE] = new Oper(this.OperAdditionDouble);
     this.arrProc[-this.OP_ADDITION_DECIMAL] = new Oper(this.OperAdditionDecimal);
     this.arrProc[-this.OP_ADDITION_STRING] = new Oper(this.OperAdditionString);
     this.arrProc[-this.OP_SUBTRACTION_INT] = new Oper(this.OperSubtractionInt);
     this.arrProc[-this.OP_SUBTRACTION_UINT] = new Oper(this.OperSubtractionUint);
     this.arrProc[-this.OP_SUBTRACTION_LONG] = new Oper(this.OperSubtractionLong);
     this.arrProc[-this.OP_SUBTRACTION_ULONG] = new Oper(this.OperSubtractionUlong);
     this.arrProc[-this.OP_SUBTRACTION_FLOAT] = new Oper(this.OperSubtractionFloat);
     this.arrProc[-this.OP_SUBTRACTION_DOUBLE] = new Oper(this.OperSubtractionDouble);
     this.arrProc[-this.OP_SUBTRACTION_DECIMAL] = new Oper(this.OperSubtractionDecimal);
     this.arrProc[-this.OP_MULTIPLICATION_INT] = new Oper(this.OperMultiplicationInt);
     this.arrProc[-this.OP_MULTIPLICATION_UINT] = new Oper(this.OperMultiplicationUint);
     this.arrProc[-this.OP_MULTIPLICATION_LONG] = new Oper(this.OperMultiplicationLong);
     this.arrProc[-this.OP_MULTIPLICATION_ULONG] = new Oper(this.OperMultiplicationUlong);
     this.arrProc[-this.OP_MULTIPLICATION_FLOAT] = new Oper(this.OperMultiplicationFloat);
     this.arrProc[-this.OP_MULTIPLICATION_DOUBLE] = new Oper(this.OperMultiplicationDouble);
     this.arrProc[-this.OP_MULTIPLICATION_DECIMAL] = new Oper(this.OperMultiplicationDecimal);
     this.arrProc[-this.OP_EXPONENT_INT] = new Oper(this.OperExponentInt);
     this.arrProc[-this.OP_EXPONENT_UINT] = new Oper(this.OperExponentUint);
     this.arrProc[-this.OP_EXPONENT_LONG] = new Oper(this.OperExponentLong);
     this.arrProc[-this.OP_EXPONENT_ULONG] = new Oper(this.OperExponentUlong);
     this.arrProc[-this.OP_EXPONENT_FLOAT] = new Oper(this.OperExponentFloat);
     this.arrProc[-this.OP_EXPONENT_DOUBLE] = new Oper(this.OperExponentDouble);
     this.arrProc[-this.OP_EXPONENT_DECIMAL] = new Oper(this.OperExponentDecimal);
     this.arrProc[-this.OP_DIVISION_INT] = new Oper(this.OperDivisionInt);
     this.arrProc[-this.OP_DIVISION_UINT] = new Oper(this.OperDivisionUint);
     this.arrProc[-this.OP_DIVISION_LONG] = new Oper(this.OperDivisionLong);
     this.arrProc[-this.OP_DIVISION_ULONG] = new Oper(this.OperDivisionUlong);
     this.arrProc[-this.OP_DIVISION_FLOAT] = new Oper(this.OperDivisionFloat);
     this.arrProc[-this.OP_DIVISION_DOUBLE] = new Oper(this.OperDivisionDouble);
     this.arrProc[-this.OP_DIVISION_DECIMAL] = new Oper(this.OperDivisionDecimal);
     this.arrProc[-this.OP_REMAINDER_INT] = new Oper(this.OperRemainderInt);
     this.arrProc[-this.OP_REMAINDER_UINT] = new Oper(this.OperRemainderUint);
     this.arrProc[-this.OP_REMAINDER_LONG] = new Oper(this.OperRemainderLong);
     this.arrProc[-this.OP_REMAINDER_ULONG] = new Oper(this.OperRemainderUlong);
     this.arrProc[-this.OP_REMAINDER_FLOAT] = new Oper(this.OperRemainderFloat);
     this.arrProc[-this.OP_REMAINDER_DOUBLE] = new Oper(this.OperRemainderDouble);
     this.arrProc[-this.OP_REMAINDER_DECIMAL] = new Oper(this.OperRemainderDecimal);
     this.arrProc[-this.OP_LEFT_SHIFT_INT] = new Oper(this.OperLeftShiftInt);
     this.arrProc[-this.OP_LEFT_SHIFT_UINT] = new Oper(this.OperLeftShiftUint);
     this.arrProc[-this.OP_LEFT_SHIFT_LONG] = new Oper(this.OperLeftShiftLong);
     this.arrProc[-this.OP_LEFT_SHIFT_ULONG] = new Oper(this.OperLeftShiftUlong);
     this.arrProc[-this.OP_RIGHT_SHIFT_INT] = new Oper(this.OperRightShiftInt);
     this.arrProc[-this.OP_RIGHT_SHIFT_UINT] = new Oper(this.OperRightShiftUint);
     this.arrProc[-this.OP_RIGHT_SHIFT_LONG] = new Oper(this.OperRightShiftLong);
     this.arrProc[-this.OP_RIGHT_SHIFT_ULONG] = new Oper(this.OperRightShiftUlong);
     this.arrProc[-this.OP_BITWISE_AND_INT] = new Oper(this.OperBitwiseAndInt);
     this.arrProc[-this.OP_BITWISE_AND_UINT] = new Oper(this.OperBitwiseAndUint);
     this.arrProc[-this.OP_BITWISE_AND_LONG] = new Oper(this.OperBitwiseAndLong);
     this.arrProc[-this.OP_BITWISE_AND_ULONG] = new Oper(this.OperBitwiseAndUlong);
     this.arrProc[-this.OP_BITWISE_AND_BOOL] = new Oper(this.OperBitwiseAndBool);
     this.arrProc[-this.OP_BITWISE_OR_INT] = new Oper(this.OperBitwiseOrInt);
     this.arrProc[-this.OP_BITWISE_OR_UINT] = new Oper(this.OperBitwiseOrUint);
     this.arrProc[-this.OP_BITWISE_OR_LONG] = new Oper(this.OperBitwiseOrLong);
     this.arrProc[-this.OP_BITWISE_OR_ULONG] = new Oper(this.OperBitwiseOrUlong);
     this.arrProc[-this.OP_BITWISE_OR_BOOL] = new Oper(this.OperBitwiseOrBool);
     this.arrProc[-this.OP_BITWISE_XOR_INT] = new Oper(this.OperBitwiseXorInt);
     this.arrProc[-this.OP_BITWISE_XOR_UINT] = new Oper(this.OperBitwiseXorUint);
     this.arrProc[-this.OP_BITWISE_XOR_LONG] = new Oper(this.OperBitwiseXorLong);
     this.arrProc[-this.OP_BITWISE_XOR_ULONG] = new Oper(this.OperBitwiseXorUlong);
     this.arrProc[-this.OP_BITWISE_XOR_BOOL] = new Oper(this.OperBitwiseXorBool);
     this.arrProc[-this.OP_LT_INT] = new Oper(this.OperLessThanInt);
     this.arrProc[-this.OP_LT_UINT] = new Oper(this.OperLessThanUint);
     this.arrProc[-this.OP_LT_LONG] = new Oper(this.OperLessThanLong);
     this.arrProc[-this.OP_LT_ULONG] = new Oper(this.OperLessThanUlong);
     this.arrProc[-this.OP_LT_FLOAT] = new Oper(this.OperLessThanFloat);
     this.arrProc[-this.OP_LT_DOUBLE] = new Oper(this.OperLessThanDouble);
     this.arrProc[-this.OP_LT_DECIMAL] = new Oper(this.OperLessThanDecimal);
     this.arrProc[-this.OP_LT_STRING] = new Oper(this.OperLessThanString);
     this.arrProc[-this.OP_LE_INT] = new Oper(this.OperLessThanOrEqualInt);
     this.arrProc[-this.OP_LE_UINT] = new Oper(this.OperLessThanOrEqualUint);
     this.arrProc[-this.OP_LE_LONG] = new Oper(this.OperLessThanOrEqualLong);
     this.arrProc[-this.OP_LE_ULONG] = new Oper(this.OperLessThanOrEqualUlong);
     this.arrProc[-this.OP_LE_FLOAT] = new Oper(this.OperLessThanOrEqualFloat);
     this.arrProc[-this.OP_LE_DOUBLE] = new Oper(this.OperLessThanOrEqualDouble);
     this.arrProc[-this.OP_LE_DECIMAL] = new Oper(this.OperLessThanOrEqualDecimal);
     this.arrProc[-this.OP_LE_STRING] = new Oper(this.OperLessThanOrEqualString);
     this.arrProc[-this.OP_GT_INT] = new Oper(this.OperGreaterThanInt);
     this.arrProc[-this.OP_GT_UINT] = new Oper(this.OperGreaterThanUint);
     this.arrProc[-this.OP_GT_LONG] = new Oper(this.OperGreaterThanLong);
     this.arrProc[-this.OP_GT_ULONG] = new Oper(this.OperGreaterThanUlong);
     this.arrProc[-this.OP_GT_FLOAT] = new Oper(this.OperGreaterThanFloat);
     this.arrProc[-this.OP_GT_DOUBLE] = new Oper(this.OperGreaterThanDouble);
     this.arrProc[-this.OP_GT_DECIMAL] = new Oper(this.OperGreaterThanDecimal);
     this.arrProc[-this.OP_GT_STRING] = new Oper(this.OperGreaterThanString);
     this.arrProc[-this.OP_GE_INT] = new Oper(this.OperGreaterThanOrEqualInt);
     this.arrProc[-this.OP_GE_UINT] = new Oper(this.OperGreaterThanOrEqualUint);
     this.arrProc[-this.OP_GE_LONG] = new Oper(this.OperGreaterThanOrEqualLong);
     this.arrProc[-this.OP_GE_ULONG] = new Oper(this.OperGreaterThanOrEqualUlong);
     this.arrProc[-this.OP_GE_FLOAT] = new Oper(this.OperGreaterThanOrEqualFloat);
     this.arrProc[-this.OP_GE_DOUBLE] = new Oper(this.OperGreaterThanOrEqualDouble);
     this.arrProc[-this.OP_GE_DECIMAL] = new Oper(this.OperGreaterThanOrEqualDecimal);
     this.arrProc[-this.OP_GE_STRING] = new Oper(this.OperGreaterThanOrEqualString);
     this.arrProc[-this.OP_EQ_INT] = new Oper(this.OperEqualityInt);
     this.arrProc[-this.OP_EQ_UINT] = new Oper(this.OperEqualityUint);
     this.arrProc[-this.OP_EQ_LONG] = new Oper(this.OperEqualityLong);
     this.arrProc[-this.OP_EQ_ULONG] = new Oper(this.OperEqualityUlong);
     this.arrProc[-this.OP_EQ_FLOAT] = new Oper(this.OperEqualityFloat);
     this.arrProc[-this.OP_EQ_DOUBLE] = new Oper(this.OperEqualityDouble);
     this.arrProc[-this.OP_EQ_DECIMAL] = new Oper(this.OperEqualityDecimal);
     this.arrProc[-this.OP_EQ_STRING] = new Oper(this.OperEqualityString);
     this.arrProc[-this.OP_EQ_BOOL] = new Oper(this.OperEqualityBool);
     this.arrProc[-this.OP_EQ_OBJECT] = new Oper(this.OperEqualityObject);
     this.arrProc[-this.OP_NE_INT] = new Oper(this.OperInequalityInt);
     this.arrProc[-this.OP_NE_UINT] = new Oper(this.OperInequalityUint);
     this.arrProc[-this.OP_NE_LONG] = new Oper(this.OperInequalityLong);
     this.arrProc[-this.OP_NE_ULONG] = new Oper(this.OperInequalityUlong);
     this.arrProc[-this.OP_NE_FLOAT] = new Oper(this.OperInequalityFloat);
     this.arrProc[-this.OP_NE_DOUBLE] = new Oper(this.OperInequalityDouble);
     this.arrProc[-this.OP_NE_DECIMAL] = new Oper(this.OperInequalityDecimal);
     this.arrProc[-this.OP_NE_STRING] = new Oper(this.OperInequalityString);
     this.arrProc[-this.OP_NE_BOOL] = new Oper(this.OperInequalityBool);
     this.arrProc[-this.OP_NE_OBJECT] = new Oper(this.OperInequalityObject);
     this.arrProc[-this.OP_SWAPPED_ARGUMENTS] = new Oper(this.OperSwappedArguments);
     this.prog = new ArrayList();
     for (num = 0; num < 0x3e8; num++)
     {
         this.prog.Add(new ProgRec());
     }
     this.n = 0;
     this.card = 0;
 }