public int char_to_int(constant_node cn) { #if (DEBUG) if (cn.semantic_node_type != semantic_node_type.char_const_node) { throw new CompilerInternalError("Error in static type conversion"); } #endif char_const_node icn = (char_const_node)cn; return((int)icn.const_value); }
private string get_constant(constant_node cn) { if (cn is int_const_node) { return((cn as int_const_node).constant_value.ToString()); } if (cn is char_const_node) { return("'" + (cn as char_const_node).constant_value.ToString() + "'"); } if (cn is byte_const_node) { return((cn as byte_const_node).constant_value.ToString()); } if (cn is sbyte_const_node) { return((cn as sbyte_const_node).constant_value.ToString()); } if (cn is short_const_node) { return((cn as short_const_node).constant_value.ToString()); } if (cn is ushort_const_node) { return((cn as ushort_const_node).constant_value.ToString()); } if (cn is uint_const_node) { return((cn as uint_const_node).constant_value.ToString()); } if (cn is long_const_node) { return((cn as long_const_node).constant_value.ToString()); } if (cn is ulong_const_node) { return((cn as ulong_const_node).constant_value.ToString()); } return(""); }
private void check_for_strong_constant(constant_node cn, location loc) { switch (cn.semantic_node_type) { case semantic_node_type.bool_const_node : case semantic_node_type.byte_const_node : case semantic_node_type.char_const_node : case semantic_node_type.sbyte_const_node : case semantic_node_type.short_const_node : case semantic_node_type.ushort_const_node : case semantic_node_type.int_const_node : case semantic_node_type.uint_const_node : case semantic_node_type.long_const_node : case semantic_node_type.ulong_const_node : case semantic_node_type.float_const_node : case semantic_node_type.double_const_node : case semantic_node_type.string_const_node : case semantic_node_type.enum_const : case semantic_node_type.null_const_node : return; default: AddError(loc, "CONSTANT_EXPRESSION_EXPECTED"); break; } }
public int char_to_int(constant_node cn) { #if (DEBUG) if (cn.semantic_node_type!=semantic_node_type.char_const_node) { throw new CompilerInternalError("Error in static type conversion"); } #endif char_const_node icn=(char_const_node)cn; return ((int)icn.const_value); }
private string get_constant(constant_node cn) { if (cn is int_const_node) return (cn as int_const_node).constant_value.ToString(); if (cn is char_const_node) return "'"+(cn as char_const_node).constant_value.ToString()+"'"; if (cn is byte_const_node) return (cn as byte_const_node).constant_value.ToString(); if (cn is sbyte_const_node) return (cn as sbyte_const_node).constant_value.ToString(); if (cn is short_const_node) return (cn as short_const_node).constant_value.ToString(); if (cn is ushort_const_node) return (cn as ushort_const_node).constant_value.ToString(); if (cn is uint_const_node) return (cn as uint_const_node).constant_value.ToString(); if (cn is long_const_node) return (cn as long_const_node).constant_value.ToString(); if (cn is ulong_const_node) return (cn as ulong_const_node).constant_value.ToString(); return ""; }
public constant_node create_need_constant_for_diapason(constant_node cn, type_node tn) { if (tn == SystemLibrary.SystemLibrary.integer_type) { switch (cn.semantic_node_type) { case semantic_node_type.int_const_node: return cn; case semantic_node_type.byte_const_node: return new int_const_node((cn as byte_const_node).constant_value, cn.location); case semantic_node_type.sbyte_const_node: return new int_const_node((cn as sbyte_const_node).constant_value, cn.location); case semantic_node_type.short_const_node: return new int_const_node((cn as short_const_node).constant_value, cn.location); case semantic_node_type.ushort_const_node: return new int_const_node((cn as ushort_const_node).constant_value, cn.location); } return cn; } else if (tn == SystemLibrary.SystemLibrary.int64_type) { switch (cn.semantic_node_type) { case semantic_node_type.long_const_node: return cn; case semantic_node_type.uint_const_node: return new long_const_node((cn as uint_const_node).constant_value, cn.location); case semantic_node_type.int_const_node: return new long_const_node((cn as int_const_node).constant_value, cn.location); case semantic_node_type.byte_const_node: return new long_const_node((cn as byte_const_node).constant_value, cn.location); case semantic_node_type.sbyte_const_node: return new long_const_node((cn as sbyte_const_node).constant_value, cn.location); case semantic_node_type.short_const_node: return new long_const_node((cn as short_const_node).constant_value, cn.location); case semantic_node_type.ushort_const_node: return new long_const_node((cn as ushort_const_node).constant_value, cn.location); } return cn; } else if (tn == SystemLibrary.SystemLibrary.uint64_type) { switch (cn.semantic_node_type) { case semantic_node_type.ulong_const_node: return cn; case semantic_node_type.uint_const_node: return new long_const_node((cn as uint_const_node).constant_value, cn.location); //case semantic_node_type.int_const_node : return new long_const_node((cn as int_const_node).constant_value, cn.location); case semantic_node_type.byte_const_node: return new long_const_node((cn as byte_const_node).constant_value, cn.location); //case semantic_node_type.sbyte_const_node : return new long_const_node((cn as sbyte_const_node).constant_value, cn.location); //case semantic_node_type.short_const_node : return new long_const_node((cn as short_const_node).constant_value, cn.location); case semantic_node_type.ushort_const_node: return new long_const_node((cn as ushort_const_node).constant_value, cn.location); } return cn; } return cn; }
private static int bool_to_int(constant_node cn) { #if (DEBUG) if (cn.semantic_node_type != semantic_node_type.bool_const_node) { throw new CompilerInternalError("Error in static type conversion"); } #endif bool_const_node icn = (bool_const_node)cn; return (Convert.ToInt32(icn.constant_value)); }
private static int long_to_int(constant_node cn) { #if (DEBUG) if (cn.semantic_node_type != semantic_node_type.long_const_node) { throw new CompilerInternalError("Error in static type conversion"); } #endif long_const_node icn = null; icn = (long_const_node)cn; return (int)icn.constant_value; }
/// <summary> /// Конструктор класса. /// </summary> public compiled_class_constant_definition(System.Reflection.FieldInfo fi, constant_node cn) : base(fi.Name, cn, null) { _comprehensive_type = compiled_type_node.get_type_node(fi.DeclaringType); _fi = fi; }
/// <summary> /// Конструктор класса. /// </summary> /// <param name="name">Имя константы.</param> /// <param name="cn">Значение константы.</param> /// <param name="loc">Расположение константы.</param> /// <param name="comprehensive_type">Тип, содержащий константу.</param> public class_constant_definition(string name, constant_node cn, location loc, common_type_node comprehensive_type, SemanticTree.field_access_level field_access_level) : base(name,cn,loc) { _comprehensive_type = comprehensive_type; _fal = field_access_level; }
/// <summary> /// Конструктор класса. /// </summary> /// <param name="name">Имя константы.</param> /// <param name="cn">Значени константы.</param> /// <param name="loc">Расположение определения константы.</param> /// <param name="comprehensive_namespace">Пространство имен в котором определена константа.</param> public namespace_constant_definition(string name, constant_node cn, location loc, common_namespace_node comprehensive_namespace) : base(name,cn,loc) { _comprehensive_namespace = comprehensive_namespace; }
/// <summary> /// Конструктор класса. /// </summary> /// <param name="inc_method">Метод получения следующего значения порядкового типа.</param> /// <param name="dec_method">Метод получения предыдущего значения порядкового типа.</param> /// <param name="lower_eq_method">Метод сравнения двух значений данного типа. Принимает два значения перечислимого типа и возвращаит true если левое меньше или равро правого. Иначе false.</param> /// <param name="greater_eq_method">Метод сравнения двух значений данного типа. Принимает два значения перечислимого типа и возвращаит true если левое больше или равро правого. Иначе false.</param> /// <param name="lower_value">Наименьшее значени перечислимого типа.</param> /// <param name="upper_value">Наибольшее значение перечеслимого типа.</param> /// <param name="value_to_int">Метод преобразования значения перечислимого типа в целое число.</param> /// <param name="ordinal_type_to_int_method">Делегат, который позволяет преобразовывать значение перечислимого типа в целое во время компиляции.</param> public ordinal_type_interface(function_node inc_method, function_node dec_method, function_node inc_value_method, function_node dec_value_method, function_node lower_eq_method, function_node greater_eq_method, function_node lower_method, function_node greater_method, constant_node lower_value, constant_node upper_value, function_node value_to_int, ordinal_type_to_int ordinal_type_to_int_method) { _inc_method = inc_method; _dec_method = dec_method; _inc_value_method = inc_value_method; _dec_value_method = dec_value_method; _lower_eq_method = lower_eq_method; _greater_eq_method = greater_eq_method; _lower_method = lower_method; _greater_method = greater_method; _lower_value = lower_value; _upper_value = upper_value; _value_to_int = value_to_int; _ordinal_type_to_int = ordinal_type_to_int_method; }
public static void add_convertions_to_diap(common_type_node ctn, constant_node lower_value, constant_node upper_value) { type_node element_type = ctn.base_type; if (element_type != SystemLibrary.SystemLibrary.char_type && element_type != SystemLibrary.SystemLibrary.bool_type) { //element_type.add_name(compiler_string_consts.assign_name,new SymbolInfo(SystemLibrary.SystemLibrary.make_assign_operator(ctn,PascalABCCompiler.SemanticTree.basic_function_type.iassign))); /*element_type.add_name(compiler_string_consts.assign_name,new SymbolInfo(SystemLibrary.SystemLibrary.make_assign_operator(ctn,PascalABCCompiler.SemanticTree.basic_function_type.bassign))); element_type.add_name(compiler_string_consts.assign_name,new SymbolInfo(SystemLibrary.SystemLibrary.make_assign_operator(ctn,PascalABCCompiler.SemanticTree.basic_function_type.sassign))); element_type.add_name(compiler_string_consts.assign_name,new SymbolInfo(SystemLibrary.SystemLibrary.make_assign_operator(ctn,PascalABCCompiler.SemanticTree.basic_function_type.sbassign))); element_type.add_name(compiler_string_consts.assign_name,new SymbolInfo(SystemLibrary.SystemLibrary.make_assign_operator(ctn,PascalABCCompiler.SemanticTree.basic_function_type.usassign))); element_type.add_name(compiler_string_consts.assign_name,new SymbolInfo(SystemLibrary.SystemLibrary.make_assign_operator(ctn,PascalABCCompiler.SemanticTree.basic_function_type.uiassign))); element_type.add_name(compiler_string_consts.assign_name,new SymbolInfo(SystemLibrary.SystemLibrary.make_assign_operator(ctn,PascalABCCompiler.SemanticTree.basic_function_type.lassign))); element_type.add_name(compiler_string_consts.assign_name,new SymbolInfo(SystemLibrary.SystemLibrary.make_assign_operator(ctn,PascalABCCompiler.SemanticTree.basic_function_type.ulassign)));*/ } else if (element_type == SystemLibrary.SystemLibrary.char_type) element_type.add_generated_name(compiler_string_consts.assign_name,new SymbolInfo(SystemLibrary.SystemLibrary.make_assign_operator(ctn,PascalABCCompiler.SemanticTree.basic_function_type.charassign))); else if (element_type == SystemLibrary.SystemLibrary.bool_type) element_type.add_generated_name(compiler_string_consts.assign_name, new SymbolInfo(SystemLibrary.SystemLibrary.make_assign_operator(ctn, PascalABCCompiler.SemanticTree.basic_function_type.boolassign))); else if (element_type.IsEnum) { element_type.add_generated_name(compiler_string_consts.assign_name, new SymbolInfo(SystemLibrary.SystemLibrary.make_assign_operator(ctn, PascalABCCompiler.SemanticTree.basic_function_type.iassign))); element_type.add_generated_name(compiler_string_consts.assign_name, new SymbolInfo(SystemLibrary.SystemLibrary.make_assign_operator(element_type, PascalABCCompiler.SemanticTree.basic_function_type.iassign))); } if (element_type == SystemLibrary.SystemLibrary.integer_type) { //SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.integer_type,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.none,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.byte_type,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.itob,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.sbyte_type,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.itosb,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.short_type,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.itos,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.ushort_type,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.itous,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.uint_type,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.itoui,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.int64_type,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.itol,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.uint64_type,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.itoul,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.double_type,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.itod,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.float_type,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.itof,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.char_type,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.itochar,false); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.byte_type,ctn,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.btoi,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.sbyte_type,ctn,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.sbtoi,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.short_type,ctn,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.stoi,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.ushort_type,ctn,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.ustoi,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.integer_type,ctn,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.none,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.uint_type,ctn,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.uitoi,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.int64_type,ctn,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.ltoi,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.uint64_type,ctn,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.ultoi,true); //SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.real_type,ctn,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.itod,true); //SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.float_type,ctn,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.itof,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.char_type,ctn,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.chartoi,false); //SystemLibrary.SystemLibrary.make_unary_empty_operator(compiler_string_consts.plus_name, ctn, ctn); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.not_name, ctn, SystemLibrary.SystemLibrary.int_not); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.minus_name, ctn, SystemLibrary.SystemLibrary.int_unmin); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.gr_name, ctn, SystemLibrary.SystemLibrary.int_gr); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.greq_name, ctn, SystemLibrary.SystemLibrary.int_greq); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.sm_name, ctn, SystemLibrary.SystemLibrary.int_sm); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.smeq_name, ctn, SystemLibrary.SystemLibrary.int_smeq); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.eq_name, ctn, SystemLibrary.SystemLibrary.int_eq); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.noteq_name, ctn, SystemLibrary.SystemLibrary.int_noteq); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.plus_name, ctn, SystemLibrary.SystemLibrary.int_add); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.minus_name, ctn, SystemLibrary.SystemLibrary.int_sub); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.mul_name, ctn, SystemLibrary.SystemLibrary.int_mul); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.idiv_name, ctn, SystemLibrary.SystemLibrary.int_idiv); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.mod_name, ctn, SystemLibrary.SystemLibrary.int_mod); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.and_name, ctn, SystemLibrary.SystemLibrary.int_and); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.or_name, ctn, SystemLibrary.SystemLibrary.int_or); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.xor_name, ctn, SystemLibrary.SystemLibrary.int_xor); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.shl_name, ctn, SystemLibrary.SystemLibrary.int_shl); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.shr_name, ctn, SystemLibrary.SystemLibrary.int_shr); } else if (element_type == SystemLibrary.SystemLibrary.byte_type) { //SystemLibrary.SystemLibrary.make_generated_type_conversion(tctn,SystemLibrary.SystemLibrary.byte_type,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.itob,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.sbyte_type,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.btosb,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.short_type,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.btos,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.ushort_type,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.btous,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.integer_type,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.btoi,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.uint_type,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.btoui,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.int64_type,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.btol,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.uint64_type,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.btoul,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.double_type,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.btod,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.float_type,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.btof,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.char_type,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.btochar,false); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.byte_type,ctn,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.none,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.sbyte_type,ctn,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.sbtob,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.short_type,ctn,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.stob,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.ushort_type,ctn,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.ustob,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.integer_type,ctn,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.uitob,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.uint_type,ctn,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.uitob,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.int64_type,ctn,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.ltob,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.uint64_type,ctn,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.ultob,true); //SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.real_type,ctn,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.itod,true); //SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.float_type,ctn,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.itof,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.char_type,ctn,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.chartob,false); //SystemLibrary.SystemLibrary.make_unary_empty_operator(compiler_string_consts.plus_name, ctn, ctn); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.not_name, ctn, SystemLibrary.SystemLibrary.int_not); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.minus_name, ctn, SystemLibrary.SystemLibrary.int_unmin); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.gr_name, ctn, SystemLibrary.SystemLibrary.int_gr); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.greq_name, ctn, SystemLibrary.SystemLibrary.int_greq); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.sm_name, ctn, SystemLibrary.SystemLibrary.int_sm); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.smeq_name, ctn, SystemLibrary.SystemLibrary.int_smeq); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.eq_name, ctn, SystemLibrary.SystemLibrary.int_eq); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.noteq_name, ctn, SystemLibrary.SystemLibrary.int_noteq); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.plus_name, ctn, SystemLibrary.SystemLibrary.int_add); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.minus_name, ctn, SystemLibrary.SystemLibrary.int_sub); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.mul_name, ctn, SystemLibrary.SystemLibrary.int_mul); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.idiv_name, ctn, SystemLibrary.SystemLibrary.int_idiv); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.mod_name, ctn, SystemLibrary.SystemLibrary.int_mod); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.and_name, ctn, SystemLibrary.SystemLibrary.int_and); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.or_name, ctn, SystemLibrary.SystemLibrary.int_or); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.xor_name, ctn, SystemLibrary.SystemLibrary.int_xor); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.shl_name, ctn, SystemLibrary.SystemLibrary.int_shl); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.shr_name, ctn, SystemLibrary.SystemLibrary.int_shr); } else if (element_type == SystemLibrary.SystemLibrary.sbyte_type) { SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.byte_type,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.sbtob,true); //SystemLibrary.SystemLibrary.make_generated_type_conversion(tctn,SystemLibrary.SystemLibrary.sbyte_type,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.short_type,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.sbtos,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.ushort_type,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.sbtous,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.integer_type,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.sbtoi,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.uint_type,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.sbtoui,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.int64_type,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.sbtol,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.uint64_type,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.sbtoul,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.double_type,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.sbtod,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.float_type,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.sbtof,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.char_type,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.sbtochar,false); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.byte_type,ctn,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.btosb,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.sbyte_type,ctn,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.none,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.short_type,ctn,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.stosb,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.ushort_type,ctn,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.ustosb,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.integer_type,ctn,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.uitosb,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.uint_type,ctn,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.uitosb,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.int64_type,ctn,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.ltosb,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.uint64_type,ctn,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.ultosb,true); //SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.real_type,ctn,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.itod,true); //SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.float_type,ctn,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.itof,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.char_type,ctn,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.chartosb,false); //SystemLibrary.SystemLibrary.make_unary_empty_operator(compiler_string_consts.plus_name, ctn, ctn); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.not_name, ctn, SystemLibrary.SystemLibrary.int_not); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.minus_name, ctn, SystemLibrary.SystemLibrary.int_unmin); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.gr_name, ctn, SystemLibrary.SystemLibrary.int_gr); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.greq_name, ctn, SystemLibrary.SystemLibrary.int_greq); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.sm_name, ctn, SystemLibrary.SystemLibrary.int_sm); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.smeq_name, ctn, SystemLibrary.SystemLibrary.int_smeq); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.eq_name, ctn, SystemLibrary.SystemLibrary.int_eq); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.noteq_name, ctn, SystemLibrary.SystemLibrary.int_noteq); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.plus_name, ctn, SystemLibrary.SystemLibrary.int_add); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.minus_name, ctn, SystemLibrary.SystemLibrary.int_sub); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.mul_name, ctn, SystemLibrary.SystemLibrary.int_mul); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.idiv_name, ctn, SystemLibrary.SystemLibrary.int_idiv); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.mod_name, ctn, SystemLibrary.SystemLibrary.int_mod); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.and_name, ctn, SystemLibrary.SystemLibrary.int_and); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.or_name, ctn, SystemLibrary.SystemLibrary.int_or); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.xor_name, ctn, SystemLibrary.SystemLibrary.int_xor); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.shl_name, ctn, SystemLibrary.SystemLibrary.int_shl); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.shr_name, ctn, SystemLibrary.SystemLibrary.int_shr); } else if (element_type == SystemLibrary.SystemLibrary.short_type) { SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.byte_type,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.stob,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.sbyte_type,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.stosb,true); //SystemLibrary.SystemLibrary.make_generated_type_conversion(tctn,SystemLibrary.SystemLibrary.short_type,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.btos,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.ushort_type,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.stous,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.integer_type,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.stoi,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.uint_type,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.stoui,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.int64_type,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.stol,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.uint64_type,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.stoul,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.double_type,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.stod,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.float_type,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.stof,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.char_type,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.stochar,false); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.byte_type,ctn,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.btos,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.sbyte_type,ctn,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.sbtos,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.short_type,ctn,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.none,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.ushort_type,ctn,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.ustos,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.integer_type,ctn,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.uitos,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.uint_type,ctn,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.uitos,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.int64_type,ctn,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.ltos,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.uint64_type,ctn,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.ultos,true); //SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.real_type,ctn,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.itod,true); //SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.float_type,ctn,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.itof,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.char_type,ctn,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.chartos,false); //SystemLibrary.SystemLibrary.make_unary_empty_operator(compiler_string_consts.plus_name, ctn, ctn); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.not_name, ctn, SystemLibrary.SystemLibrary.int_not); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.minus_name, ctn, SystemLibrary.SystemLibrary.int_unmin); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.gr_name, ctn, SystemLibrary.SystemLibrary.int_gr); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.greq_name, ctn, SystemLibrary.SystemLibrary.int_greq); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.sm_name, ctn, SystemLibrary.SystemLibrary.int_sm); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.smeq_name, ctn, SystemLibrary.SystemLibrary.int_smeq); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.eq_name, ctn, SystemLibrary.SystemLibrary.int_eq); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.noteq_name, ctn, SystemLibrary.SystemLibrary.int_noteq); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.plus_name, ctn, SystemLibrary.SystemLibrary.int_add); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.minus_name, ctn, SystemLibrary.SystemLibrary.int_sub); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.mul_name, ctn, SystemLibrary.SystemLibrary.int_mul); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.idiv_name, ctn, SystemLibrary.SystemLibrary.int_idiv); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.mod_name, ctn, SystemLibrary.SystemLibrary.int_mod); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.and_name, ctn, SystemLibrary.SystemLibrary.int_and); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.or_name, ctn, SystemLibrary.SystemLibrary.int_or); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.xor_name, ctn, SystemLibrary.SystemLibrary.int_xor); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.shl_name, ctn, SystemLibrary.SystemLibrary.int_shl); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.shr_name, ctn, SystemLibrary.SystemLibrary.int_shr); } else if (element_type == SystemLibrary.SystemLibrary.ushort_type) { SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.byte_type,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.ustob,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.sbyte_type,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.ustosb,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.short_type,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.ustos,true); //SystemLibrary.SystemLibrary.make_generated_type_conversion(tctn,SystemLibrary.SystemLibrary.ushort_type,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.stous,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.integer_type,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.ustoi,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.uint_type,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.ustoui,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.int64_type,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.ustol,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.uint64_type,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.ustoul,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.double_type,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.ustod,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.float_type,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.ustof,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.char_type,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.ustochar,false); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.byte_type,ctn,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.btous,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.sbyte_type,ctn,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.sbtous,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.short_type,ctn,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.stous,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.ushort_type,ctn,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.none,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.integer_type,ctn,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.uitous,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.uint_type,ctn,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.uitous,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.int64_type,ctn,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.ltous,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.uint64_type,ctn,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.ultous,true); //SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.real_type,ctn,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.itod,true); //SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.float_type,ctn,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.itof,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.char_type,ctn,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.chartous,false); //SystemLibrary.SystemLibrary.make_unary_empty_operator(compiler_string_consts.plus_name, ctn, ctn); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.not_name, ctn, SystemLibrary.SystemLibrary.int_not); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.minus_name, ctn, SystemLibrary.SystemLibrary.int_unmin); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.gr_name, ctn, SystemLibrary.SystemLibrary.int_gr); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.greq_name, ctn, SystemLibrary.SystemLibrary.int_greq); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.sm_name, ctn, SystemLibrary.SystemLibrary.int_sm); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.smeq_name, ctn, SystemLibrary.SystemLibrary.int_smeq); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.eq_name, ctn, SystemLibrary.SystemLibrary.int_eq); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.noteq_name, ctn, SystemLibrary.SystemLibrary.int_noteq); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.plus_name, ctn, SystemLibrary.SystemLibrary.int_add); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.minus_name, ctn, SystemLibrary.SystemLibrary.int_sub); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.mul_name, ctn, SystemLibrary.SystemLibrary.int_mul); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.idiv_name, ctn, SystemLibrary.SystemLibrary.int_idiv); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.mod_name, ctn, SystemLibrary.SystemLibrary.int_mod); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.and_name, ctn, SystemLibrary.SystemLibrary.int_and); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.or_name, ctn, SystemLibrary.SystemLibrary.int_or); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.xor_name, ctn, SystemLibrary.SystemLibrary.int_xor); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.shl_name, ctn, SystemLibrary.SystemLibrary.int_shl); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.shr_name, ctn, SystemLibrary.SystemLibrary.int_shr); } else if (element_type == SystemLibrary.SystemLibrary.uint_type) { SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.byte_type,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.uitob,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.sbyte_type,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.uitosb,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.short_type,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.uitos,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.ushort_type,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.uitous,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.integer_type,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.uitoi,true); //SystemLibrary.SystemLibrary.make_generated_type_conversion(tctn,SystemLibrary.SystemLibrary.uint_type,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.stoui,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.int64_type,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.uitol,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.uint64_type,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.uitoul,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.double_type,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.uitod,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.float_type,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.uitof,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.char_type,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.uitochar,false); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.byte_type,ctn,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.btoui,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.sbyte_type,ctn,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.sbtoui,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.short_type,ctn,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.stoui,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.ushort_type,ctn,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.ustoui,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.integer_type,ctn,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.itoui,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.uint_type,ctn,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.none,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.int64_type,ctn,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.ltoui,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.uint64_type,ctn,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.ultoui,true); //SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.real_type,ctn,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.itod,true); //SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.float_type,ctn,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.itof,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.char_type,ctn,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.chartoui,false); //SystemLibrary.SystemLibrary.make_unary_empty_operator(compiler_string_consts.plus_name, ctn, ctn); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.not_name, ctn, SystemLibrary.SystemLibrary.uint_not); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.minus_name, ctn, SystemLibrary.SystemLibrary.uint_unmin); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.gr_name, ctn, SystemLibrary.SystemLibrary.uint_gr); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.greq_name, ctn, SystemLibrary.SystemLibrary.uint_greq); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.sm_name, ctn, SystemLibrary.SystemLibrary.uint_sm); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.smeq_name, ctn, SystemLibrary.SystemLibrary.uint_smeq); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.eq_name, ctn, SystemLibrary.SystemLibrary.uint_eq); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.noteq_name, ctn, SystemLibrary.SystemLibrary.uint_noteq); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.plus_name, ctn, SystemLibrary.SystemLibrary.uint_add); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.minus_name, ctn, SystemLibrary.SystemLibrary.uint_sub); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.mul_name, ctn, SystemLibrary.SystemLibrary.uint_mul); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.idiv_name, ctn, SystemLibrary.SystemLibrary.uint_idiv); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.mod_name, ctn, SystemLibrary.SystemLibrary.uint_mod); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.and_name, ctn, SystemLibrary.SystemLibrary.uint_and); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.or_name, ctn, SystemLibrary.SystemLibrary.uint_or); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.xor_name, ctn, SystemLibrary.SystemLibrary.uint_xor); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.shl_name, ctn, SystemLibrary.SystemLibrary.uint_shl); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.shr_name, ctn, SystemLibrary.SystemLibrary.uint_shr); } else if (element_type == SystemLibrary.SystemLibrary.int64_type) { SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.byte_type,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.ltob,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.sbyte_type,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.ltosb,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.short_type,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.ltos,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.ushort_type,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.ltous,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.integer_type,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.ltoi,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.uint_type,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.ltoui,true); //SystemLibrary.SystemLibrary.make_generated_type_conversion(tctn,SystemLibrary.SystemLibrary.long_type,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.uitol,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.uint64_type,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.ltoul,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.double_type,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.ltod,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.float_type,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.ltof,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.char_type,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.ltochar,false); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.byte_type,ctn,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.btol,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.sbyte_type,ctn,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.sbtol,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.short_type,ctn,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.stol,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.ushort_type,ctn,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.ustol,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.integer_type,ctn,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.uitol,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.uint_type,ctn,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.uitol,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.int64_type,ctn,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.none,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.uint64_type,ctn,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.ultol,true); //SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.real_type,ctn,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.itod,true); //SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.float_type,ctn,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.itof,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.char_type,ctn,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.chartol,false); //SystemLibrary.SystemLibrary.make_unary_empty_operator(compiler_string_consts.plus_name, ctn, ctn); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.not_name, ctn, SystemLibrary.SystemLibrary.long_not); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.minus_name, ctn, SystemLibrary.SystemLibrary.long_unmin); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.gr_name, ctn, SystemLibrary.SystemLibrary.long_gr); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.greq_name, ctn, SystemLibrary.SystemLibrary.long_greq); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.sm_name, ctn, SystemLibrary.SystemLibrary.long_sm); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.smeq_name, ctn, SystemLibrary.SystemLibrary.long_smeq); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.eq_name, ctn, SystemLibrary.SystemLibrary.long_eq); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.noteq_name, ctn, SystemLibrary.SystemLibrary.long_noteq); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.plus_name, ctn, SystemLibrary.SystemLibrary.long_add); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.minus_name, ctn, SystemLibrary.SystemLibrary.long_sub); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.mul_name, ctn, SystemLibrary.SystemLibrary.long_mul); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.idiv_name, ctn, SystemLibrary.SystemLibrary.long_idiv); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.mod_name, ctn, SystemLibrary.SystemLibrary.long_mod); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.and_name, ctn, SystemLibrary.SystemLibrary.long_and); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.or_name, ctn, SystemLibrary.SystemLibrary.long_or); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.xor_name, ctn, SystemLibrary.SystemLibrary.long_xor); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.shl_name, ctn, SystemLibrary.SystemLibrary.long_shl); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.shr_name, ctn, SystemLibrary.SystemLibrary.long_shr); } else if (element_type == SystemLibrary.SystemLibrary.uint64_type) { SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.byte_type,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.ultob,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.sbyte_type,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.ultosb,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.short_type,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.ultos,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.ushort_type,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.ultous,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.integer_type,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.ultoi,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.uint_type,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.ultoui,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.int64_type,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.ultol,true); //SystemLibrary.SystemLibrary.make_generated_type_conversion(tctn,SystemLibrary.SystemLibrary.ulong_type,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.ltoul,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.double_type,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.ultod,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.float_type,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.ultof,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.char_type,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.ultochar,false); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.byte_type,ctn,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.btoul,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.sbyte_type,ctn,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.sbtoul,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.short_type,ctn,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.stoul,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.ushort_type,ctn,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.ustoul,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.integer_type,ctn,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.uitoul,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.uint_type,ctn,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.uitoul,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.int64_type,ctn,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.ltoul,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.uint64_type,ctn,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.none,true); //SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.real_type,ctn,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.itod,true); //SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.float_type,ctn,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.itof,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.char_type,ctn,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.chartoul,false); //SystemLibrary.SystemLibrary.make_unary_empty_operator(compiler_string_consts.plus_name, ctn, ctn); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.not_name, ctn, SystemLibrary.SystemLibrary.ulong_not); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.minus_name, ctn, SystemLibrary.SystemLibrary.ulong_unmin); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.gr_name, ctn, SystemLibrary.SystemLibrary.ulong_gr); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.greq_name, ctn, SystemLibrary.SystemLibrary.ulong_greq); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.sm_name, ctn, SystemLibrary.SystemLibrary.ulong_sm); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.smeq_name, ctn, SystemLibrary.SystemLibrary.ulong_smeq); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.eq_name, ctn, SystemLibrary.SystemLibrary.ulong_eq); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.noteq_name, ctn, SystemLibrary.SystemLibrary.ulong_noteq); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.plus_name, ctn, SystemLibrary.SystemLibrary.ulong_add); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.minus_name, ctn, SystemLibrary.SystemLibrary.ulong_sub); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.mul_name, ctn, SystemLibrary.SystemLibrary.ulong_mul); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.idiv_name, ctn, SystemLibrary.SystemLibrary.ulong_idiv); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.and_name, ctn, SystemLibrary.SystemLibrary.ulong_and); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.or_name, ctn, SystemLibrary.SystemLibrary.ulong_or); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.xor_name, ctn, SystemLibrary.SystemLibrary.ulong_xor); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.mod_name, ctn, SystemLibrary.SystemLibrary.ulong_mod); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.shl_name, ctn, SystemLibrary.SystemLibrary.ulong_shl); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.shr_name, ctn, SystemLibrary.SystemLibrary.ulong_shr); } else if (element_type == SystemLibrary.SystemLibrary.char_type) { SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.byte_type,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.chartob,false); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.sbyte_type,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.chartosb,false); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.short_type,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.chartos,false); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.ushort_type,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.chartous,false); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.integer_type,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.chartoi,false); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.uint_type,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.chartoui,false); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.int64_type,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.chartol,false); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.uint64_type,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.chartoul,false); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.double_type,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.chartod,false); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.float_type,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.chartof,false); //SystemLibrary.SystemLibrary.make_generated_type_conversion(tctn,SystemLibrary.SystemLibrary.char_type,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.ultochar,false); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.byte_type,ctn,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.btochar,false); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.sbyte_type,ctn,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.sbtochar,false); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.short_type,ctn,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.stochar,false); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.ushort_type,ctn,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.ustochar,false); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.integer_type,ctn,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.itochar,false); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.uint_type,ctn,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.uitochar,false); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.int64_type,ctn,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.ltochar,false); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.uint64_type,ctn,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.ultochar,false); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.char_type,ctn,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.none,true); //SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.real_type,ctn,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.dtochar,false); //SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.float_type,ctn,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.chartof,false); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.gr_name, ctn, SystemLibrary.SystemLibrary.char_gr); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.greq_name, ctn, SystemLibrary.SystemLibrary.char_greq); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.sm_name, ctn, SystemLibrary.SystemLibrary.char_sm); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.smeq_name, ctn, SystemLibrary.SystemLibrary.char_smeq); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.eq_name, ctn, SystemLibrary.SystemLibrary.char_eq); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.noteq_name, ctn, SystemLibrary.SystemLibrary.char_noteq); } else if (element_type.IsEnum) { //SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,element_type,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.none); SystemLibrary.SystemLibrary.make_generated_type_conversion(element_type, ctn, type_compare.less_type, PascalABCCompiler.SemanticTree.basic_function_type.none,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.byte_type,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.itob,false); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.sbyte_type,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.itosb,false); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.short_type,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.itos,false); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.integer_type,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.none,false); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.ushort_type,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.itous,false); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.uint_type,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.itoui,false); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.int64_type,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.itol,false); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.uint64_type,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.itoul,false); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.byte_type,ctn,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.btoi,false); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.sbyte_type,ctn,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.sbtoi,false); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.short_type,ctn,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.stoi,false); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.ushort_type,ctn,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.ustoi,false); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.integer_type,ctn,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.none,false); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.uint_type,ctn,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.uitoi,false); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.int64_type,ctn,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.ltoi,false); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.uint64_type,ctn,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.ultoi,false); } internal_interface ii = element_type.get_internal_interface(internal_interface_kind.ordinal_interface); ordinal_type_interface oti_old = (ordinal_type_interface)ii; //TODO: Переделать создание потомков oti. ordinal_type_interface oti_new = new ordinal_type_interface(oti_old.inc_method, oti_old.dec_method, oti_old.inc_value_method,oti_old.dec_value_method, oti_old.lower_eq_method, oti_old.greater_eq_method, oti_old.lower_method, oti_old.greater_method, lower_value, upper_value, oti_old.value_to_int, oti_old.ordinal_type_to_int); ctn.add_internal_interface(oti_new); }
private string get_diap_type_name(constant_node low, constant_node high, string element_type_name) { if (low != null && high != null) { object o1 = low.get_object_value(); object o2 = high.get_object_value(); if (o1 is char) o1 = "'"+o1.ToString()+"'"; if (o2 is char) o2 = "'"+o2.ToString()+"'"; return o1.ToString()+".."+o2.ToString(); } return (element_type_name + "_diap"); }
public type_node get_pascal_diap(constant_node lower_value, constant_node upper_value, location left_loc,common_namespace_node _cmn, location right_loc) { type_node elem_type = lower_value.type; internal_interface ii = lower_value.type.get_internal_interface(internal_interface_kind.ordinal_interface); if (ii == null) { throw new SimpleSemanticError(left_loc, "ORDINAL_TYPE_EXPECTED"); } internal_interface iir = upper_value.type.get_internal_interface(internal_interface_kind.ordinal_interface); if (iir == null) { throw new SimpleSemanticError(right_loc, "ORDINAL_TYPE_EXPECTED"); } expression_node lower_bound = lower_value; expression_node upper_bound = upper_value; if (lower_value.type != upper_value.type) { //throw new CompilerInternalError("Unsupported now. Need constant expression evaluator."); type_compare tc = type_table.compare_types(lower_value.type,upper_value.type); if (tc == type_compare.non_comparable_type) throw new SimpleSemanticError(left_loc, "INCOMPATIBLE_ARRAY_BOUNDS_TYPES"); if (lower_value.type == SystemLibrary.SystemLibrary.uint64_type) tc = type_compare.greater_type; else if (upper_value.type == SystemLibrary.SystemLibrary.uint64_type) tc = type_compare.less_type; if (tc == type_compare.greater_type) { type_intersection_node tin = lower_value.type.get_type_intersection(upper_value.type); if (tin != null && tin.this_to_another.is_explicit) throw new SimpleSemanticError(left_loc, "INCOMPATIBLE_ARRAY_BOUNDS_TYPES"); elem_type = get_need_ordinal_type(lower_value.type); if (elem_type == SystemLibrary.SystemLibrary.uint64_type) if (upper_value.type == SystemLibrary.SystemLibrary.sbyte_type || upper_value.type == SystemLibrary.SystemLibrary.short_type || upper_value.type == SystemLibrary.SystemLibrary.integer_type || upper_value.type == SystemLibrary.SystemLibrary.int64_type) throw new SimpleSemanticError(left_loc, "INCOMPATIBLE_ARRAY_BOUNDS_TYPES"); upper_bound = convertion_data_and_alghoritms.convert_type(upper_value, elem_type); if (lower_bound.type != elem_type) lower_bound = convertion_data_and_alghoritms.convert_type(lower_value, elem_type); } else { type_intersection_node tin = upper_value.type.get_type_intersection(lower_value.type); if (tin != null && tin.this_to_another.is_explicit) throw new SimpleSemanticError(left_loc, "INCOMPATIBLE_ARRAY_BOUNDS_TYPES"); elem_type = get_need_ordinal_type(upper_value.type); if (elem_type == SystemLibrary.SystemLibrary.uint64_type) if (lower_value.type == SystemLibrary.SystemLibrary.sbyte_type || lower_value.type == SystemLibrary.SystemLibrary.short_type || lower_value.type == SystemLibrary.SystemLibrary.integer_type || lower_value.type == SystemLibrary.SystemLibrary.int64_type) throw new SimpleSemanticError(left_loc, "INCOMPATIBLE_ARRAY_BOUNDS_TYPES"); lower_bound = convertion_data_and_alghoritms.convert_type(lower_value, elem_type); if (upper_bound.type != elem_type) upper_bound = convertion_data_and_alghoritms.convert_type(upper_value, elem_type); } /*expression_node en = null; try { en = convertion_data_and_alghoritms.syntax_tree_visitor.find_operator( compiler_string_consts.eq_name, lower_value, upper_value, left_loc); } catch (NoFunctionWithSameArguments) { throw new IncompatibleArrayBoundsTypes(left_loc); } base_function_call bfc = en as base_function_call; lower_bound = convertion_data_and_alghoritms.convert_type(lower_value, bfc.parameters[0].type); upper_bound = convertion_data_and_alghoritms.convert_type(upper_value, bfc.parameters[0].type);*/ } //internal_interface iir2 = lower_bound.type.get_internal_interface(internal_interface_kind.ordinal_interface); internal_interface iir2 = elem_type.get_internal_interface(internal_interface_kind.ordinal_interface); if (iir2 == null) { throw new SimpleSemanticError(right_loc, "ORDINAL_TYPE_EXPECTED"); } ordinal_type_interface oti_left = (ordinal_type_interface)ii; ordinal_type_interface oti_right = (ordinal_type_interface)iir; if (lower_value is common_namespace_function_call_as_constant || lower_value is compiled_constructor_call_as_constant || lower_value is compiled_static_method_call_as_constant || lower_value is common_constructor_call_as_constant || lower_value is basic_function_call_as_constant) throw new SimpleSemanticError(left_loc, "CONSTANT_EXPRESSION_EXPECTED"); if (upper_value is common_namespace_function_call_as_constant || upper_value is compiled_constructor_call_as_constant || upper_value is compiled_static_method_call_as_constant || upper_value is common_constructor_call_as_constant || upper_value is basic_function_call_as_constant) throw new SimpleSemanticError(right_loc, "CONSTANT_EXPRESSION_EXPECTED"); int left_int_value = oti_left.ordinal_type_to_int(lower_value); int right_int_value = oti_right.ordinal_type_to_int(upper_value); //lower_value = new int_const_node(left_int_value,lower_value.location); //upper_value = new int_const_node(right_int_value,upper_value.location); lower_value = create_need_constant_for_diapason(lower_value,elem_type); upper_value = create_need_constant_for_diapason(upper_value,elem_type); //ssyy if (left_int_value > right_int_value) { throw new SimpleSemanticError(right_loc, "LEFT_RANGE_GREATER_THEN_RIGHT"); } //\ssyy /* System.Collections.Generic.Dictionary<int, System.Collections.Generic.Dictionary<int, type_node>> ht; if (!(pascal_diap.TryGetValue(elem_type, out ht))) { ht = new System.Collections.Generic.Dictionary<int, System.Collections.Generic.Dictionary<int, type_node>>(); pascal_diap[elem_type] = ht; } System.Collections.Generic.Dictionary<int, type_node> ht2; if (!(ht.TryGetValue(left_int_value,out ht2))) { ht2 = new System.Collections.Generic.Dictionary<int, type_node>(); ht[left_int_value] = ht2; } type_node tn; if (!((ht2.TryGetValue(right_int_value,out tn)))) { tn = create_diap_type(elem_type, lower_value, upper_value,_cmn); ht2[right_int_value] = tn; } return tn; */ type_node tn = create_diap_type(elem_type, lower_value, upper_value, _cmn); return tn; }
private static bool compare_ordinal_type(constant_node left,constant_node right,compile_time_executor cte, location call_location) { expression_node ret_expr=cte(call_location,left,right); if (ret_expr == null) { throw new CompilerInternalError("Expected compile-time executed expression."); } bool_const_node bcn = ret_expr as bool_const_node; if (bcn == null) { throw new CompilerInternalError("Expected bool value."); } return bcn.constant_value; }
private static int int_to_int(constant_node cn) { #if (DEBUG) if (cn.semantic_node_type != semantic_node_type.int_const_node) if (cn.semantic_node_type != semantic_node_type.enum_const) { throw new CompilerInternalError("Error in static type conversion"); } #endif int_const_node icn = null; if (cn.semantic_node_type == semantic_node_type.enum_const) icn = new int_const_node((cn as enum_const_node).constant_value, cn.location); else icn = (int_const_node)cn; return icn.constant_value; }
/// <summary> /// Конструктор узла. /// </summary> /// <param name="name">Имя константы.</param> /// <param name="cn">Значение константы.</param> /// <param name="loc">Расположение константы.</param> public constant_definition_node(string name, constant_node cn, location loc) { _name = name; _cn = cn; _loc = loc; }
private static int ushort_to_int(constant_node cn) { #if (DEBUG) if (cn.semantic_node_type != semantic_node_type.ushort_const_node) { throw new CompilerInternalError("Error in static type conversion"); } #endif ushort_const_node icn = (ushort_const_node)cn; return ((int)icn.constant_value); }
/// <summary> /// Конструктор класса. /// </summary> /// <param name="name">Имя константы.</param> /// <param name="cn">Значение константы.</param> /// <param name="loc">Расположение константы.</param> /// <param name="comprehensive_function">Функция, содержащая константу.</param> public function_constant_definition(string name, constant_node cn, location loc, common_function_node comprehensive_function) : base(name, cn, loc) { _comprehensive_function = comprehensive_function; }
/* private static void mark_byte_as_ordinal() { basic_function_node inc_value_method = create_inc_value_method(SemanticTree.basic_function_type.binc, _byte_type); basic_function_node dec_value_method = create_dec_value_method(SemanticTree.basic_function_type.bdec, _byte_type); basic_function_node inc_method = create_inc_method(SemanticTree.basic_function_type.binc, _byte_type); basic_function_node dec_method = create_dec_method(SemanticTree.basic_function_type.bdec, _byte_type); SymbolInfo si = _byte_type.find_in_type(compiler_string_consts.greq_name); basic_function_node greq = (basic_function_node)si.sym_info; si = _byte_type.find(compiler_string_consts.smeq_name); basic_function_node loeq = (basic_function_node)si.sym_info; constant_node cn_max = new byte_const_node(byte.MaxValue, null); constant_node cn_min = new byte_const_node(byte.MinValue, null); basic_function_node i2i_method = create_emty_function(byte_type); ordinal_type_to_int ordinal_type_to_int = byte_to_int; ordinal_type_interface oti = new ordinal_type_interface(inc_method, dec_method, inc_value_method, dec_value_method, internal_inc_value, internal_dec_value, loeq, greq, cn_min, cn_max, i2i_method, ordinal_type_to_int); _byte_type.add_internal_interface(oti); } */ private static void mark_type_as_ordinal(type_node type, SemanticTree.basic_function_type inc,SemanticTree.basic_function_type dec, SemanticTree.basic_function_type vinc, SemanticTree.basic_function_type vdec, constant_node lower_value, constant_node upper_value, function_node t2i,ordinal_type_to_int t2i_comp) { basic_function_node inc_value = create_oti_method(inc, type, SemanticTree.parameter_type.value); basic_function_node dec_value = create_oti_method(dec, type, SemanticTree.parameter_type.value); basic_function_node inc_var = create_oti_method(vinc, type, SemanticTree.parameter_type.var); basic_function_node dec_var = create_oti_method(vdec, type, SemanticTree.parameter_type.var); SymbolInfo si = type.find_in_type(compiler_string_consts.greq_name); basic_function_node greq = (basic_function_node)si.sym_info; si = type.find(compiler_string_consts.smeq_name); basic_function_node loeq = (basic_function_node)si.sym_info; si = type.find(compiler_string_consts.sm_name); basic_function_node lo = (basic_function_node)si.sym_info; si = type.find(compiler_string_consts.gr_name); basic_function_node gr = (basic_function_node)si.sym_info; ordinal_type_interface oti = new ordinal_type_interface(inc_value, dec_value, inc_var, dec_var, loeq, greq, lo, gr, lower_value, upper_value, t2i, t2i_comp); type.add_internal_interface(oti); }
//TODO: Усовершенствовать. Как должны выглядеть типы-диапазоны для net-кода. Изменить методы inc и dec так, чтобы они генерировали исключения в случае выхода за границы типа диапазона. private type_node create_diap_type(type_node element_type, constant_node lower_value, constant_node upper_value,common_namespace_node _cmn) { SymbolTable.Scope top_scope = null; if (_cmn != null) { top_scope = _cmn.scope; } //basic_type_node btn=new basic_type_node(element_type.name+"_diap"); common_type_node ctn = new common_type_node(element_type, get_diap_type_name(lower_value, upper_value, element_type.name), SemanticTree.type_access_level.tal_internal, _cmn, convertion_data_and_alghoritms.symbol_table.CreateClassScope(top_scope, null), null); ctn.type_special_kind = PascalABCCompiler.SemanticTree.type_special_kind.diap_type; ctn.internal_is_value = true; internal_interface ii = element_type.get_internal_interface(internal_interface_kind.ordinal_interface); ordinal_type_interface oti_old = (ordinal_type_interface)ii; //TODO: Переделать создание потомков oti. ordinal_type_interface oti_new = new ordinal_type_interface(oti_old.inc_method, oti_old.dec_method, oti_old.inc_value_method,oti_old.dec_value_method, oti_old.lower_eq_method, oti_old.greater_eq_method, oti_old.lower_method, oti_old.greater_method, lower_value, upper_value, oti_old.value_to_int, oti_old.ordinal_type_to_int); //type_table.add_type_conversion_from_defined(ctn,SystemLibrary.SystemLibrary.integer_type,new basic_function_node(PascalABCCompiler.SemanticTree.basic_function_type.none,ctn,true,"diaptoord"),type_compare.less_type,true); //type_table.add_type_conversion_from_defined(SystemLibrary.SystemLibrary.integer_type,ctn,new basic_function_node(PascalABCCompiler.SemanticTree.basic_function_type.none,ctn,true,"ordtodiap"),type_compare.less_type,true); //element_type.add_name(compiler_string_consts.assign_name,new SymbolInfo(SystemLibrary.SystemLibrary.make_assign_operator(ctn,PascalABCCompiler.SemanticTree.basic_function_type.iassign))); //type_table.add_type_conversion_from_defined(ctn,SystemLibrary.SystemLibrary.byte_type,new basic_function_node(PascalABCCompiler.SemanticTree.basic_function_type.none,ctn,true,"diaptoord"),type_compare.less_type,true); //type_table.add_type_conversion_from_defined(SystemLibrary.SystemLibrary.byte_type,ctn,new basic_function_node(PascalABCCompiler.SemanticTree.basic_function_type.none,ctn,true,"ordtodiap"),type_compare.less_type,true); //type_table.add_type_conversion_from_defined(ctn,element_type,new basic_function_node(PascalABCCompiler.SemanticTree.basic_function_type.none,element_type,false,"diaptoord"),type_compare.less_type,true); //type_table.add_type_conversion_from_defined(ctn,SystemLibrary.SystemLibrary.integer_type,new basic_function_node(PascalABCCompiler.SemanticTree.basic_function_type.none,ctn,true,"diaptoord"),type_compare.less_type,true); if (element_type != SystemLibrary.SystemLibrary.char_type && element_type != SystemLibrary.SystemLibrary.bool_type) { element_type.add_generated_name(compiler_string_consts.assign_name,new SymbolInfo(SystemLibrary.SystemLibrary.make_assign_operator(ctn,PascalABCCompiler.SemanticTree.basic_function_type.iassign))); /*element_type.add_name(compiler_string_consts.assign_name,new SymbolInfo(SystemLibrary.SystemLibrary.make_assign_operator(ctn,PascalABCCompiler.SemanticTree.basic_function_type.bassign))); element_type.add_name(compiler_string_consts.assign_name,new SymbolInfo(SystemLibrary.SystemLibrary.make_assign_operator(ctn,PascalABCCompiler.SemanticTree.basic_function_type.sassign))); element_type.add_name(compiler_string_consts.assign_name,new SymbolInfo(SystemLibrary.SystemLibrary.make_assign_operator(ctn,PascalABCCompiler.SemanticTree.basic_function_type.sbassign))); element_type.add_name(compiler_string_consts.assign_name,new SymbolInfo(SystemLibrary.SystemLibrary.make_assign_operator(ctn,PascalABCCompiler.SemanticTree.basic_function_type.usassign))); element_type.add_name(compiler_string_consts.assign_name,new SymbolInfo(SystemLibrary.SystemLibrary.make_assign_operator(ctn,PascalABCCompiler.SemanticTree.basic_function_type.uiassign))); element_type.add_name(compiler_string_consts.assign_name,new SymbolInfo(SystemLibrary.SystemLibrary.make_assign_operator(ctn,PascalABCCompiler.SemanticTree.basic_function_type.lassign))); element_type.add_name(compiler_string_consts.assign_name,new SymbolInfo(SystemLibrary.SystemLibrary.make_assign_operator(ctn,PascalABCCompiler.SemanticTree.basic_function_type.ulassign)));*/ } else if (element_type == SystemLibrary.SystemLibrary.char_type) element_type.add_generated_name(compiler_string_consts.assign_name, new SymbolInfo(SystemLibrary.SystemLibrary.make_assign_operator(ctn, PascalABCCompiler.SemanticTree.basic_function_type.charassign))); else if (element_type == SystemLibrary.SystemLibrary.bool_type) element_type.add_generated_name(compiler_string_consts.assign_name, new SymbolInfo(SystemLibrary.SystemLibrary.make_assign_operator(ctn, PascalABCCompiler.SemanticTree.basic_function_type.boolassign))); else if (element_type.IsEnum) { element_type.add_generated_name(compiler_string_consts.assign_name, new SymbolInfo(SystemLibrary.SystemLibrary.make_assign_operator(ctn, PascalABCCompiler.SemanticTree.basic_function_type.iassign))); element_type.add_generated_name(compiler_string_consts.assign_name, new SymbolInfo(SystemLibrary.SystemLibrary.make_assign_operator(element_type, PascalABCCompiler.SemanticTree.basic_function_type.iassign))); } if (element_type == SystemLibrary.SystemLibrary.integer_type) { SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.byte_type,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.itob,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.sbyte_type,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.itosb,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.short_type,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.itos,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.ushort_type,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.itous,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.uint_type,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.itoui,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.int64_type,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.itol,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.uint64_type,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.itoul,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.double_type,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.itod,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.float_type,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.itof,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.char_type,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.itochar,false); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.byte_type,ctn,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.btoi,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.sbyte_type,ctn,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.sbtoi,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.short_type,ctn,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.stoi,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.ushort_type,ctn,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.ustoi,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.integer_type,ctn,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.none,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.uint_type,ctn,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.uitoi,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.int64_type,ctn,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.ltoi,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.uint64_type,ctn,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.ultoi,true); //SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.real_type,ctn,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.itod,true); //SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.float_type,ctn,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.itof,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.char_type,ctn,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.chartoi,false); //SystemLibrary.SystemLibrary.make_unary_empty_operator(compiler_string_consts.plus_name, ctn, ctn); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.not_name, ctn, SystemLibrary.SystemLibrary.int_not); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.minus_name, ctn, SystemLibrary.SystemLibrary.int_unmin); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.gr_name, ctn, SystemLibrary.SystemLibrary.int_gr); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.greq_name, ctn, SystemLibrary.SystemLibrary.int_greq); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.sm_name, ctn, SystemLibrary.SystemLibrary.int_sm); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.smeq_name, ctn, SystemLibrary.SystemLibrary.int_smeq); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.eq_name, ctn, SystemLibrary.SystemLibrary.int_eq); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.noteq_name, ctn, SystemLibrary.SystemLibrary.int_noteq); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.plus_name, ctn, SystemLibrary.SystemLibrary.int_add); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.minus_name, ctn, SystemLibrary.SystemLibrary.int_sub); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.mul_name, ctn, SystemLibrary.SystemLibrary.int_mul); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.idiv_name, ctn, SystemLibrary.SystemLibrary.int_idiv); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.mod_name, ctn, SystemLibrary.SystemLibrary.int_mod); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.and_name, ctn, SystemLibrary.SystemLibrary.int_and); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.or_name, ctn, SystemLibrary.SystemLibrary.int_or); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.xor_name, ctn, SystemLibrary.SystemLibrary.int_xor); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.shl_name, ctn, SystemLibrary.SystemLibrary.int_shl); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.shr_name, ctn, SystemLibrary.SystemLibrary.int_shr); } else if (element_type == SystemLibrary.SystemLibrary.byte_type) { //SystemLibrary.SystemLibrary.make_generated_type_conversion(tctn,SystemLibrary.SystemLibrary.byte_type,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.itob,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.sbyte_type,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.btosb,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.short_type,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.btos,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.ushort_type,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.btous,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.integer_type,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.btoi,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.uint_type,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.btoui,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.int64_type,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.btol,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.uint64_type,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.btoul,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.double_type,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.btod,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.float_type,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.btof,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.char_type,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.btochar,false); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.byte_type,ctn,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.none,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.sbyte_type,ctn,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.sbtob,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.short_type,ctn,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.stob,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.ushort_type,ctn,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.ustob,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.integer_type,ctn,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.uitob,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.uint_type,ctn,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.uitob,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.int64_type,ctn,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.ltob,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.uint64_type,ctn,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.ultob,true); //SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.real_type,ctn,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.itod,true); //SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.float_type,ctn,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.itof,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.char_type,ctn,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.chartob,false); //SystemLibrary.SystemLibrary.make_unary_empty_operator(compiler_string_consts.plus_name, ctn, ctn); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.not_name, ctn, SystemLibrary.SystemLibrary.int_not); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.minus_name, ctn, SystemLibrary.SystemLibrary.int_unmin); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.gr_name, ctn, SystemLibrary.SystemLibrary.int_gr); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.greq_name, ctn, SystemLibrary.SystemLibrary.int_greq); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.sm_name, ctn, SystemLibrary.SystemLibrary.int_sm); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.smeq_name, ctn, SystemLibrary.SystemLibrary.int_smeq); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.eq_name, ctn, SystemLibrary.SystemLibrary.int_eq); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.noteq_name, ctn, SystemLibrary.SystemLibrary.int_noteq); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.plus_name, ctn, SystemLibrary.SystemLibrary.int_add); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.minus_name, ctn, SystemLibrary.SystemLibrary.int_sub); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.mul_name, ctn, SystemLibrary.SystemLibrary.int_mul); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.idiv_name, ctn, SystemLibrary.SystemLibrary.int_idiv); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.mod_name, ctn, SystemLibrary.SystemLibrary.int_mod); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.and_name, ctn, SystemLibrary.SystemLibrary.int_and); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.or_name, ctn, SystemLibrary.SystemLibrary.int_or); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.xor_name, ctn, SystemLibrary.SystemLibrary.int_xor); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.shl_name, ctn, SystemLibrary.SystemLibrary.int_shl); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.shr_name, ctn, SystemLibrary.SystemLibrary.int_shr); } else if (element_type == SystemLibrary.SystemLibrary.sbyte_type) { SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.byte_type,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.sbtob,true); //SystemLibrary.SystemLibrary.make_generated_type_conversion(tctn,SystemLibrary.SystemLibrary.sbyte_type,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.short_type,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.sbtos,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.ushort_type,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.sbtous,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.integer_type,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.sbtoi,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.uint_type,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.sbtoui,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.int64_type,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.sbtol,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.uint64_type,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.sbtoul,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.double_type,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.sbtod,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.float_type,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.sbtof,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.char_type,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.sbtochar,false); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.byte_type,ctn,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.btosb,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.sbyte_type,ctn,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.none,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.short_type,ctn,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.stosb,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.ushort_type,ctn,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.ustosb,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.integer_type,ctn,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.uitosb,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.uint_type,ctn,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.uitosb,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.int64_type,ctn,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.ltosb,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.uint64_type,ctn,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.ultosb,true); //SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.real_type,ctn,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.itod,true); //SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.float_type,ctn,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.itof,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.char_type,ctn,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.chartosb,false); //SystemLibrary.SystemLibrary.make_unary_empty_operator(compiler_string_consts.plus_name, ctn, ctn); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.not_name, ctn, SystemLibrary.SystemLibrary.int_not); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.minus_name, ctn, SystemLibrary.SystemLibrary.int_unmin); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.gr_name, ctn, SystemLibrary.SystemLibrary.int_gr); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.greq_name, ctn, SystemLibrary.SystemLibrary.int_greq); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.sm_name, ctn, SystemLibrary.SystemLibrary.int_sm); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.smeq_name, ctn, SystemLibrary.SystemLibrary.int_smeq); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.eq_name, ctn, SystemLibrary.SystemLibrary.int_eq); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.noteq_name, ctn, SystemLibrary.SystemLibrary.int_noteq); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.plus_name, ctn, SystemLibrary.SystemLibrary.int_add); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.minus_name, ctn, SystemLibrary.SystemLibrary.int_sub); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.mul_name, ctn, SystemLibrary.SystemLibrary.int_mul); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.idiv_name, ctn, SystemLibrary.SystemLibrary.int_idiv); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.mod_name, ctn, SystemLibrary.SystemLibrary.int_mod); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.and_name, ctn, SystemLibrary.SystemLibrary.int_and); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.or_name, ctn, SystemLibrary.SystemLibrary.int_or); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.xor_name, ctn, SystemLibrary.SystemLibrary.int_xor); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.shl_name, ctn, SystemLibrary.SystemLibrary.int_shl); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.shr_name, ctn, SystemLibrary.SystemLibrary.int_shr); } else if (element_type == SystemLibrary.SystemLibrary.short_type) { SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.byte_type,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.stob,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.sbyte_type,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.stosb,true); //SystemLibrary.SystemLibrary.make_generated_type_conversion(tctn,SystemLibrary.SystemLibrary.short_type,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.btos,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.ushort_type,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.stous,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.integer_type,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.stoi,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.uint_type,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.stoui,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.int64_type,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.stol,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.uint64_type,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.stoul,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.double_type,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.stod,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.float_type,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.stof,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.char_type,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.stochar,false); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.byte_type,ctn,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.btos,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.sbyte_type,ctn,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.sbtos,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.short_type,ctn,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.none,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.ushort_type,ctn,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.ustos,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.integer_type,ctn,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.uitos,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.uint_type,ctn,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.uitos,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.int64_type,ctn,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.ltos,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.uint64_type,ctn,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.ultos,true); //SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.real_type,ctn,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.itod,true); //SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.float_type,ctn,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.itof,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.char_type,ctn,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.chartos,false); //SystemLibrary.SystemLibrary.make_unary_empty_operator(compiler_string_consts.plus_name, ctn, ctn); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.not_name, ctn, SystemLibrary.SystemLibrary.int_not); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.minus_name, ctn, SystemLibrary.SystemLibrary.int_unmin); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.gr_name, ctn, SystemLibrary.SystemLibrary.int_gr); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.greq_name, ctn, SystemLibrary.SystemLibrary.int_greq); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.sm_name, ctn, SystemLibrary.SystemLibrary.int_sm); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.smeq_name, ctn, SystemLibrary.SystemLibrary.int_smeq); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.eq_name, ctn, SystemLibrary.SystemLibrary.int_eq); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.noteq_name, ctn, SystemLibrary.SystemLibrary.int_noteq); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.plus_name, ctn, SystemLibrary.SystemLibrary.int_add); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.minus_name, ctn, SystemLibrary.SystemLibrary.int_sub); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.mul_name, ctn, SystemLibrary.SystemLibrary.int_mul); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.idiv_name, ctn, SystemLibrary.SystemLibrary.int_idiv); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.mod_name, ctn, SystemLibrary.SystemLibrary.int_mod); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.and_name, ctn, SystemLibrary.SystemLibrary.int_and); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.or_name, ctn, SystemLibrary.SystemLibrary.int_or); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.xor_name, ctn, SystemLibrary.SystemLibrary.int_xor); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.shl_name, ctn, SystemLibrary.SystemLibrary.int_shl); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.shr_name, ctn, SystemLibrary.SystemLibrary.int_shr); } else if (element_type == SystemLibrary.SystemLibrary.ushort_type) { SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.byte_type,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.ustob,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.sbyte_type,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.ustosb,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.short_type,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.ustos,true); //SystemLibrary.SystemLibrary.make_generated_type_conversion(tctn,SystemLibrary.SystemLibrary.ushort_type,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.stous,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.integer_type,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.ustoi,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.uint_type,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.ustoui,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.int64_type,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.ustol,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.uint64_type,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.ustoul,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.double_type,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.ustod,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.float_type,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.ustof,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.char_type,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.ustochar,false); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.byte_type,ctn,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.btous,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.sbyte_type,ctn,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.sbtous,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.short_type,ctn,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.stous,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.ushort_type,ctn,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.none,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.integer_type,ctn,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.uitous,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.uint_type,ctn,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.uitous,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.int64_type,ctn,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.ltous,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.uint64_type,ctn,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.ultous,true); //SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.real_type,ctn,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.itod,true); //SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.float_type,ctn,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.itof,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.char_type,ctn,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.chartous,false); //SystemLibrary.SystemLibrary.make_unary_empty_operator(compiler_string_consts.plus_name, ctn, ctn); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.not_name, ctn, SystemLibrary.SystemLibrary.int_not); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.minus_name, ctn, SystemLibrary.SystemLibrary.int_unmin); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.gr_name, ctn, SystemLibrary.SystemLibrary.int_gr); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.greq_name, ctn, SystemLibrary.SystemLibrary.int_greq); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.sm_name, ctn, SystemLibrary.SystemLibrary.int_sm); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.smeq_name, ctn, SystemLibrary.SystemLibrary.int_smeq); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.eq_name, ctn, SystemLibrary.SystemLibrary.int_eq); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.noteq_name, ctn, SystemLibrary.SystemLibrary.int_noteq); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.plus_name, ctn, SystemLibrary.SystemLibrary.int_add); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.minus_name, ctn, SystemLibrary.SystemLibrary.int_sub); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.mul_name, ctn, SystemLibrary.SystemLibrary.int_mul); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.idiv_name, ctn, SystemLibrary.SystemLibrary.int_idiv); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.mod_name, ctn, SystemLibrary.SystemLibrary.int_mod); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.and_name, ctn, SystemLibrary.SystemLibrary.int_and); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.or_name, ctn, SystemLibrary.SystemLibrary.int_or); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.xor_name, ctn, SystemLibrary.SystemLibrary.int_xor); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.shl_name, ctn, SystemLibrary.SystemLibrary.int_shl); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.shr_name, ctn, SystemLibrary.SystemLibrary.int_shr); } else if (element_type == SystemLibrary.SystemLibrary.uint_type) { SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.byte_type,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.uitob,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.sbyte_type,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.uitosb,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.short_type,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.uitos,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.ushort_type,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.uitous,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.integer_type,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.uitoi,true); //SystemLibrary.SystemLibrary.make_generated_type_conversion(tctn,SystemLibrary.SystemLibrary.uint_type,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.stoui,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.int64_type,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.uitol,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.uint64_type,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.uitoul,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.double_type,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.uitod,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.float_type,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.uitof,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.char_type,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.uitochar,false); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.byte_type,ctn,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.btoui,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.sbyte_type,ctn,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.sbtoui,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.short_type,ctn,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.stoui,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.ushort_type,ctn,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.ustoui,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.integer_type,ctn,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.itoui,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.uint_type,ctn,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.none,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.int64_type,ctn,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.ltoui,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.uint64_type,ctn,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.ultoui,true); //SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.real_type,ctn,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.itod,true); //SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.float_type,ctn,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.itof,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.char_type,ctn,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.chartoui,false); //SystemLibrary.SystemLibrary.make_unary_empty_operator(compiler_string_consts.plus_name, ctn, ctn); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.not_name, ctn, SystemLibrary.SystemLibrary.uint_not); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.minus_name, ctn, SystemLibrary.SystemLibrary.uint_unmin); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.gr_name, ctn, SystemLibrary.SystemLibrary.uint_gr); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.greq_name, ctn, SystemLibrary.SystemLibrary.uint_greq); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.sm_name, ctn, SystemLibrary.SystemLibrary.uint_sm); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.smeq_name, ctn, SystemLibrary.SystemLibrary.uint_smeq); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.eq_name, ctn, SystemLibrary.SystemLibrary.uint_eq); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.noteq_name, ctn, SystemLibrary.SystemLibrary.uint_noteq); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.plus_name, ctn, SystemLibrary.SystemLibrary.uint_add); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.minus_name, ctn, SystemLibrary.SystemLibrary.uint_sub); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.mul_name, ctn, SystemLibrary.SystemLibrary.uint_mul); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.idiv_name, ctn, SystemLibrary.SystemLibrary.uint_idiv); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.mod_name, ctn, SystemLibrary.SystemLibrary.uint_mod); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.and_name, ctn, SystemLibrary.SystemLibrary.uint_and); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.or_name, ctn, SystemLibrary.SystemLibrary.uint_or); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.xor_name, ctn, SystemLibrary.SystemLibrary.uint_xor); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.shl_name, ctn, SystemLibrary.SystemLibrary.uint_shl); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.shr_name, ctn, SystemLibrary.SystemLibrary.uint_shr); } else if (element_type == SystemLibrary.SystemLibrary.int64_type) { SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.byte_type,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.ltob,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.sbyte_type,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.ltosb,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.short_type,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.ltos,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.ushort_type,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.ltous,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.integer_type,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.ltoi,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.uint_type,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.ltoui,true); //SystemLibrary.SystemLibrary.make_generated_type_conversion(tctn,SystemLibrary.SystemLibrary.long_type,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.uitol,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.uint64_type,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.ltoul,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.double_type,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.ltod,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.float_type,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.ltof,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.char_type,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.ltochar,false); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.byte_type,ctn,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.btol,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.sbyte_type,ctn,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.sbtol,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.short_type,ctn,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.stol,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.ushort_type,ctn,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.ustol,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.integer_type,ctn,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.uitol,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.uint_type,ctn,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.uitol,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.int64_type,ctn,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.none,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.uint64_type,ctn,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.ultol,true); //SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.real_type,ctn,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.itod,true); //SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.float_type,ctn,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.itof,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.char_type,ctn,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.chartol,false); //SystemLibrary.SystemLibrary.make_unary_empty_operator(compiler_string_consts.plus_name, ctn, ctn); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.not_name, ctn, SystemLibrary.SystemLibrary.long_not); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.minus_name, ctn, SystemLibrary.SystemLibrary.long_unmin); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.gr_name, ctn, SystemLibrary.SystemLibrary.long_gr); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.greq_name, ctn, SystemLibrary.SystemLibrary.long_greq); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.sm_name, ctn, SystemLibrary.SystemLibrary.long_sm); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.smeq_name, ctn, SystemLibrary.SystemLibrary.long_smeq); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.eq_name, ctn, SystemLibrary.SystemLibrary.long_eq); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.noteq_name, ctn, SystemLibrary.SystemLibrary.long_noteq); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.plus_name, ctn, SystemLibrary.SystemLibrary.long_add); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.minus_name, ctn, SystemLibrary.SystemLibrary.long_sub); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.mul_name, ctn, SystemLibrary.SystemLibrary.long_mul); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.idiv_name, ctn, SystemLibrary.SystemLibrary.long_idiv); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.mod_name, ctn, SystemLibrary.SystemLibrary.long_mod); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.and_name, ctn, SystemLibrary.SystemLibrary.long_and); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.or_name, ctn, SystemLibrary.SystemLibrary.long_or); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.xor_name, ctn, SystemLibrary.SystemLibrary.long_xor); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.shl_name, ctn, SystemLibrary.SystemLibrary.long_shl); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.shr_name, ctn, SystemLibrary.SystemLibrary.long_shr); } else if (element_type == SystemLibrary.SystemLibrary.uint64_type) { SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.byte_type,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.ultob,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.sbyte_type,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.ultosb,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.short_type,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.ultos,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.ushort_type,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.ultous,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.integer_type,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.ultoi,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.uint_type,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.ultoui,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.int64_type,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.ultol,true); //SystemLibrary.SystemLibrary.make_generated_type_conversion(tctn,SystemLibrary.SystemLibrary.ulong_type,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.ltoul,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.double_type,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.ultod,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.float_type,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.ultof,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.char_type,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.ultochar,false); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.byte_type,ctn,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.btoul,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.sbyte_type,ctn,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.sbtoul,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.short_type,ctn,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.stoul,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.ushort_type,ctn,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.ustoul,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.integer_type,ctn,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.uitoul,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.uint_type,ctn,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.uitoul,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.int64_type,ctn,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.ltoul,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.uint64_type,ctn,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.none,true); //SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.real_type,ctn,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.itod,true); //SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.float_type,ctn,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.itof,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.char_type,ctn,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.chartoul,false); //SystemLibrary.SystemLibrary.make_unary_empty_operator(compiler_string_consts.plus_name, ctn, ctn); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.not_name, ctn, SystemLibrary.SystemLibrary.ulong_not); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.minus_name, ctn, SystemLibrary.SystemLibrary.ulong_unmin); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.gr_name, ctn, SystemLibrary.SystemLibrary.ulong_gr); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.greq_name, ctn, SystemLibrary.SystemLibrary.ulong_greq); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.sm_name, ctn, SystemLibrary.SystemLibrary.ulong_sm); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.smeq_name, ctn, SystemLibrary.SystemLibrary.ulong_smeq); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.eq_name, ctn, SystemLibrary.SystemLibrary.ulong_eq); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.noteq_name, ctn, SystemLibrary.SystemLibrary.ulong_noteq); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.plus_name, ctn, SystemLibrary.SystemLibrary.ulong_add); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.minus_name, ctn, SystemLibrary.SystemLibrary.ulong_sub); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.mul_name, ctn, SystemLibrary.SystemLibrary.ulong_mul); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.idiv_name, ctn, SystemLibrary.SystemLibrary.ulong_idiv); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.and_name, ctn, SystemLibrary.SystemLibrary.ulong_and); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.or_name, ctn, SystemLibrary.SystemLibrary.ulong_or); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.xor_name, ctn, SystemLibrary.SystemLibrary.ulong_xor); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.mod_name, ctn, SystemLibrary.SystemLibrary.ulong_mod); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.shl_name, ctn, SystemLibrary.SystemLibrary.ulong_shl); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.shr_name, ctn, SystemLibrary.SystemLibrary.ulong_shr); } else if (element_type == SystemLibrary.SystemLibrary.char_type) { SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.byte_type,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.chartob,false); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.sbyte_type,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.chartosb,false); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.short_type,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.chartos,false); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.ushort_type,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.chartous,false); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.integer_type,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.chartoi,false); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.uint_type,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.chartoui,false); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.int64_type,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.chartol,false); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.uint64_type,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.chartoul,false); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.double_type,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.chartod,false); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.float_type,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.chartof,false); //SystemLibrary.SystemLibrary.make_generated_type_conversion(tctn,SystemLibrary.SystemLibrary.char_type,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.ultochar,false); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.byte_type,ctn,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.btochar,false); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.sbyte_type,ctn,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.sbtochar,false); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.short_type,ctn,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.stochar,false); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.ushort_type,ctn,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.ustochar,false); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.integer_type,ctn,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.itochar,false); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.uint_type,ctn,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.uitochar,false); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.int64_type,ctn,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.ltochar,false); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.uint64_type,ctn,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.ultochar,false); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.char_type,ctn,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.none,true); //SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.real_type,ctn,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.dtochar,false); //SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.float_type,ctn,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.chartof,false); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.gr_name, ctn, SystemLibrary.SystemLibrary.char_gr); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.greq_name, ctn, SystemLibrary.SystemLibrary.char_greq); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.sm_name, ctn, SystemLibrary.SystemLibrary.char_sm); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.smeq_name, ctn, SystemLibrary.SystemLibrary.char_smeq); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.eq_name, ctn, SystemLibrary.SystemLibrary.char_eq); SystemLibrary.SystemLibrary.add_generated_funtion_to_type(compiler_string_consts.noteq_name, ctn, SystemLibrary.SystemLibrary.char_noteq); } else if (element_type.IsEnum) { SystemLibrary.SystemLibrary.make_generated_type_conversion(element_type,ctn,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.none,true); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.byte_type,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.itob,false); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.sbyte_type,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.itosb,false); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.short_type,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.itos,false); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.integer_type,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.none,false); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.ushort_type,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.itous,false); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.uint_type,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.itoui,false); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.int64_type,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.itol,false); SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,SystemLibrary.SystemLibrary.uint64_type,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.itoul,false); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.byte_type,ctn,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.btoi,false); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.sbyte_type,ctn,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.sbtoi,false); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.short_type,ctn,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.stoi,false); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.ushort_type,ctn,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.ustoi,false); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.integer_type,ctn,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.none,false); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.uint_type,ctn,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.uitoi,false); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.int64_type,ctn,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.ltoi,false); SystemLibrary.SystemLibrary.make_generated_type_conversion(SystemLibrary.SystemLibrary.uint64_type,ctn,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.ultoi,false); //SystemLibrary.SystemLibrary.make_generated_type_conversion(ctn,element_type,type_compare.greater_type,PascalABCCompiler.SemanticTree.basic_function_type.none); //SystemLibrary.SystemLibrary.make_generated_type_conversion(element_type,ctn,type_compare.less_type,PascalABCCompiler.SemanticTree.basic_function_type.none); } /*if (element_type != SystemLibrary.SystemLibrary.char_type && element_type != SystemLibrary.SystemLibrary.bool_type) { //if (SystemLibrary.SystemLibrary.sbyte_type != element_type) //type_table.add_type_conversion_from_defined(ctn,SystemLibrary.SystemLibrary.sbyte_type,new basic_function_node(PascalABCCompiler.SemanticTree.basic_function_type.none,ctn,true,"diaptoord"),type_compare.less_type,true); if (SystemLibrary.SystemLibrary.byte_type != element_type) type_table.add_type_conversion_from_defined(ctn,SystemLibrary.SystemLibrary.byte_type,new basic_function_node(PascalABCCompiler.SemanticTree.basic_function_type.none,ctn,true,"diaptoord"),type_compare.less_type,true); if (SystemLibrary.SystemLibrary.short_type != element_type) type_table.add_type_conversion_from_defined(ctn,SystemLibrary.SystemLibrary.short_type,new basic_function_node(PascalABCCompiler.SemanticTree.basic_function_type.none,ctn,true,"diaptoord"),type_compare.less_type,true); if (SystemLibrary.SystemLibrary.ushort_type != element_type) type_table.add_type_conversion_from_defined(ctn,SystemLibrary.SystemLibrary.ushort_type,new basic_function_node(PascalABCCompiler.SemanticTree.basic_function_type.none,ctn,true,"diaptoord"),type_compare.less_type,true); if (SystemLibrary.SystemLibrary.integer_type != element_type) type_table.add_type_conversion_from_defined(ctn,SystemLibrary.SystemLibrary.integer_type,new basic_function_node(PascalABCCompiler.SemanticTree.basic_function_type.none,ctn,true,"diaptoord"),type_compare.less_type,true); if (SystemLibrary.SystemLibrary.uint_type != element_type) type_table.add_type_conversion_from_defined(ctn,SystemLibrary.SystemLibrary.uint_type,new basic_function_node(PascalABCCompiler.SemanticTree.basic_function_type.none,ctn,true,"diaptoord"),type_compare.less_type,true); if (SystemLibrary.SystemLibrary.long_type != element_type) type_table.add_type_conversion_from_defined(ctn,SystemLibrary.SystemLibrary.long_type,new basic_function_node(PascalABCCompiler.SemanticTree.basic_function_type.none,ctn,true,"diaptoord"),type_compare.less_type,true); if (SystemLibrary.SystemLibrary.ulong_type != element_type) type_table.add_type_conversion_from_defined(ctn,SystemLibrary.SystemLibrary.ulong_type,new basic_function_node(PascalABCCompiler.SemanticTree.basic_function_type.none,ctn,true,"diaptoord"),type_compare.less_type,true); } if (element_type != SystemLibrary.SystemLibrary.char_type && element_type != SystemLibrary.SystemLibrary.bool_type) { //type_table.add_type_conversion_from_defined(SystemLibrary.SystemLibrary.integer_type,ctn,new basic_function_node(PascalABCCompiler.SemanticTree.basic_function_type.none,ctn,true,"ordtodiap"),type_compare.less_type,true); //if (SystemLibrary.SystemLibrary.byte_type != element_type) //type_table.add_type_conversion_from_defined(SystemLibrary.SystemLibrary.sbyte_type,ctn,new basic_function_node(PascalABCCompiler.SemanticTree.basic_function_type.none,ctn,true,"ordtodiap"),type_compare.less_type,true); type_table.add_type_conversion_from_defined(SystemLibrary.SystemLibrary.byte_type,ctn,new basic_function_node(PascalABCCompiler.SemanticTree.basic_function_type.none,ctn,true,"ordtodiap"),type_compare.less_type,true); //if (SystemLibrary.SystemLibrary.sbyte_type != element_type) //if (SystemLibrary.SystemLibrary.short_type != element_type) type_table.add_type_conversion_from_defined(SystemLibrary.SystemLibrary.short_type,ctn,new basic_function_node(PascalABCCompiler.SemanticTree.basic_function_type.none,ctn,true,"ordtodiap"),type_compare.less_type,true); //if (SystemLibrary.SystemLibrary.ushort_type != element_type) type_table.add_type_conversion_from_defined(SystemLibrary.SystemLibrary.ushort_type,ctn,new basic_function_node(PascalABCCompiler.SemanticTree.basic_function_type.none,ctn,true,"ordtodiap"),type_compare.less_type,true); //if (SystemLibrary.SystemLibrary.integer_type != element_type) type_table.add_type_conversion_from_defined(SystemLibrary.SystemLibrary.integer_type,ctn,new basic_function_node(PascalABCCompiler.SemanticTree.basic_function_type.none,ctn,true,"ordtodiap"),type_compare.less_type,true); //if (SystemLibrary.SystemLibrary.uint_type != element_type) type_table.add_type_conversion_from_defined(SystemLibrary.SystemLibrary.uint_type,ctn,new basic_function_node(PascalABCCompiler.SemanticTree.basic_function_type.none,ctn,true,"ordtodiap"),type_compare.less_type,true); //if (SystemLibrary.SystemLibrary.long_type != element_type) type_table.add_type_conversion_from_defined(SystemLibrary.SystemLibrary.long_type,ctn,new basic_function_node(PascalABCCompiler.SemanticTree.basic_function_type.none,ctn,true,"ordtodiap"),type_compare.less_type,true); //if (SystemLibrary.SystemLibrary.ulong_type != element_type) type_table.add_type_conversion_from_defined(SystemLibrary.SystemLibrary.ulong_type,ctn,new basic_function_node(PascalABCCompiler.SemanticTree.basic_function_type.none,ctn,true,"ordtodiap"),type_compare.less_type,true); } else type_table.add_type_conversion_from_defined(element_type,ctn,new basic_function_node(PascalABCCompiler.SemanticTree.basic_function_type.none,ctn,true,"ordtodiap"),type_compare.less_type,true); */ // common_namespace_function_node cnfn = new common_namespace_function_node("Inc$"+pascal_arrays_num++,null,this.convertion_data_and_alghoritms.syntax_tree_visitor.context.converted_namespace,null); // cnfn.parameters.AddElement(new common_parameter("value",ctn,PascalABCCompiler.SemanticTree.parameter_type.var,cnfn,concrete_parameter_type.cpt_var,null,null)); // cnfn.is_overload = true; //this.convertion_data_and_alghoritms.syntax_tree_visitor.context.converted_namespace.functions.AddElement(cnfn); // if (SystemLibrary.SystemLibrary.system_unit.namespaces.Count > 0) // SystemLibrary.SystemLibrary.system_unit.namespaces[0].functions.AddElement(cnfn); // (SystemLibrary.SystemLibrary.system_unit.scope.Find(PascalABCCompiler.TreeConverter.compiler_string_consts.system_unit_name).sym_info as common_namespace_node).functions.AddElement(cnfn); // else // this.convertion_data_and_alghoritms.syntax_tree_visitor.context.converted_namespace.functions.AddElement(cnfn); // statements_list sl = new statements_list(null); // PascalABCCompiler.SemanticTree.basic_function_type bft = PascalABCCompiler.SemanticTree.basic_function_type.iinc; // if (element_type == SystemLibrary.SystemLibrary.byte_type) // bft = PascalABCCompiler.SemanticTree.basic_function_type.binc; // else if (element_type == SystemLibrary.SystemLibrary.sbyte_type) // bft = PascalABCCompiler.SemanticTree.basic_function_type.sbinc; // else if (element_type == SystemLibrary.SystemLibrary.short_type) // bft = PascalABCCompiler.SemanticTree.basic_function_type.sinc; // else if (element_type == SystemLibrary.SystemLibrary.ushort_type) // bft = PascalABCCompiler.SemanticTree.basic_function_type.usinc; // else if (element_type == SystemLibrary.SystemLibrary.uint_type) // bft = PascalABCCompiler.SemanticTree.basic_function_type.uiinc; // else if (element_type == SystemLibrary.SystemLibrary.long_type) // bft = PascalABCCompiler.SemanticTree.basic_function_type.linc; // else if (element_type == SystemLibrary.SystemLibrary.ulong_type) // bft = PascalABCCompiler.SemanticTree.basic_function_type.ulinc; // else if (element_type == SystemLibrary.SystemLibrary.char_type) // bft = PascalABCCompiler.SemanticTree.basic_function_type.cinc; // else if (element_type == SystemLibrary.SystemLibrary.bool_type) // bft = PascalABCCompiler.SemanticTree.basic_function_type.boolinc; // basic_function_call bfc = new basic_function_call(new basic_function_node(bft,element_type,true),null); // bfc.parameters.AddElement(new common_parameter_reference(cnfn.parameters[0] as common_parameter,0,null)); // sl.statements.AddElement(bfc); // cnfn.function_code = sl; // SymbolInfo si = this.convertion_data_and_alghoritms.syntax_tree_visitor.context.converted_namespace.scope.Find("Inc"); // while (si.Next != null) // si = si.Next; // si.Next = new SymbolInfo(cnfn); // si.Next.access_level = access_level.al_internal; // si.Next.symbol_kind = symbol_kind.sk_overload_procedure; // //SystemLibrary.SystemLibrary.system_unit.scope.AddSymbol("Inc",new SymbolInfo(cnfn)); // // cnfn = new common_namespace_function_node("Dec$"+pascal_arrays_num++,null,this.convertion_data_and_alghoritms.syntax_tree_visitor.context.converted_namespace,null); // cnfn.parameters.AddElement(new common_parameter("value",ctn,PascalABCCompiler.SemanticTree.parameter_type.var,cnfn,concrete_parameter_type.cpt_var,null,null)); // //this.convertion_data_and_alghoritms.syntax_tree_visitor.context.converted_namespace.functions.AddElement(cnfn); // if (SystemLibrary.SystemLibrary.system_unit.namespaces.Count > 0) // SystemLibrary.SystemLibrary.system_unit.namespaces[0].functions.AddElement(cnfn); // else // this.convertion_data_and_alghoritms.syntax_tree_visitor.context.converted_namespace.functions.AddElement(cnfn); // sl = new statements_list(null); // bft = PascalABCCompiler.SemanticTree.basic_function_type.idec; // if (element_type == SystemLibrary.SystemLibrary.byte_type) // bft = PascalABCCompiler.SemanticTree.basic_function_type.bdec; // else if (element_type == SystemLibrary.SystemLibrary.sbyte_type) // bft = PascalABCCompiler.SemanticTree.basic_function_type.sbdec; // else if (element_type == SystemLibrary.SystemLibrary.short_type) // bft = PascalABCCompiler.SemanticTree.basic_function_type.sdec; // else if (element_type == SystemLibrary.SystemLibrary.ushort_type) // bft = PascalABCCompiler.SemanticTree.basic_function_type.usdec; // else if (element_type == SystemLibrary.SystemLibrary.uint_type) // bft = PascalABCCompiler.SemanticTree.basic_function_type.uidec; // else if (element_type == SystemLibrary.SystemLibrary.long_type) // bft = PascalABCCompiler.SemanticTree.basic_function_type.ldec; // else if (element_type == SystemLibrary.SystemLibrary.ulong_type) // bft = PascalABCCompiler.SemanticTree.basic_function_type.uldec; // else if (element_type == SystemLibrary.SystemLibrary.char_type) // bft = PascalABCCompiler.SemanticTree.basic_function_type.cdec; // else if (element_type == SystemLibrary.SystemLibrary.bool_type) // bft = PascalABCCompiler.SemanticTree.basic_function_type.booldec; // bfc = new basic_function_call(new basic_function_node(bft,element_type,true),null); // bfc.parameters.AddElement(new common_parameter_reference(cnfn.parameters[0] as common_parameter,0,null)); // sl.statements.AddElement(bfc); // cnfn.function_code = sl; // // SystemLibrary.SystemLibrary.system_unit.scope.AddSymbol("Dec",new SymbolInfo(cnfn)); // if (element_type == SystemLibrary.SystemLibrary.integer_type) // element_type.add_name(compiler_string_consts.assign_name,new SymbolInfo(SystemLibrary.SystemLibrary.make_assign_operator(ctn,PascalABCCompiler.SemanticTree.basic_function_type.iassign))); // else if (element_type == SystemLibrary.SystemLibrary.byte_type) // element_type.add_name(compiler_string_consts.assign_name,new SymbolInfo(SystemLibrary.SystemLibrary.make_assign_operator(ctn,PascalABCCompiler.SemanticTree.basic_function_type.bassign))); /*element_type.add_name(compiler_string_consts.assign_name,new SymbolInfo(SystemLibrary.SystemLibrary.make_assign_operator(ctn,PascalABCCompiler.SemanticTree.basic_function_type.sassign))); element_type.add_name(compiler_string_consts.assign_name,new SymbolInfo(SystemLibrary.SystemLibrary.make_assign_operator(ctn,PascalABCCompiler.SemanticTree.basic_function_type.sbassign))); element_type.add_name(compiler_string_consts.assign_name,new SymbolInfo(SystemLibrary.SystemLibrary.make_assign_operator(ctn,PascalABCCompiler.SemanticTree.basic_function_type.usassign))); element_type.add_name(compiler_string_consts.assign_name,new SymbolInfo(SystemLibrary.SystemLibrary.make_assign_operator(ctn,PascalABCCompiler.SemanticTree.basic_function_type.uiassign))); element_type.add_name(compiler_string_consts.assign_name,new SymbolInfo(SystemLibrary.SystemLibrary.make_assign_operator(ctn,PascalABCCompiler.SemanticTree.basic_function_type.lassign))); element_type.add_name(compiler_string_consts.assign_name,new SymbolInfo(SystemLibrary.SystemLibrary.make_assign_operator(ctn,PascalABCCompiler.SemanticTree.basic_function_type.ulassign)));*/ // else if (element_type == SystemLibrary.SystemLibrary.char_type) // element_type.add_name(compiler_string_consts.assign_name,new SymbolInfo(SystemLibrary.SystemLibrary.make_assign_operator(ctn,PascalABCCompiler.SemanticTree.basic_function_type.charassign))); // else if (element_type == SystemLibrary.SystemLibrary.bool_type) // element_type.add_name(compiler_string_consts.assign_name,new SymbolInfo(SystemLibrary.SystemLibrary.make_assign_operator(ctn,PascalABCCompiler.SemanticTree.basic_function_type.boolassign))); ctn.add_internal_interface(oti_new); this.convertion_data_and_alghoritms.syntax_tree_visitor.context.converted_namespace.types.AddElement(ctn); return ctn; }