コード例 #1
0
        //No v drugom smisle reference.
        private void make_object_operator(ref_type_node ctn, SemanticTree.basic_function_type bas_ft,
                                          string name, type_node ret_type, SemanticTree.parameter_type first_parameter_type)
        {
            parameterArrayList  pars = new parameterArrayList();
            basic_function_node bfn  = new basic_function_node(bas_ft, pars, ret_type);

            bfn.is_overload = true;
            basic_parameter to = new basic_parameter(compiler_string_consts.left_param_name, ctn,
                                                     first_parameter_type, bfn);
            basic_parameter from = new basic_parameter(compiler_string_consts.right_param_name, ctn,
                                                       SemanticTree.parameter_type.value, bfn);

            pars.Add(to);
            pars.Add(from);
            ctn.add_additional_name(name, new SymbolInfo(bfn));
        }
コード例 #2
0
        private string get_pointer_name(ref_type_node ctn)
        {
            type_node tn = ctn.pointed_type;
            int       i  = 1;

            while (tn is ref_type_node)
            {
                i++;
                tn = (tn as ref_type_node).pointed_type;
            }
            string s = get_name(tn);

            for (int j = 0; j < i; j++)
            {
                s += "*";
            }
            return(s);
        }
コード例 #3
0
		public void init_reference_type(ref_type_node ctn)
		{
			make_assign_operator(ctn);
			make_equivalence_operator(ctn);
			make_not_equivalence_operator(ctn);
		}
コード例 #4
0
		private void make_not_equivalence_operator(ref_type_node ctn)
		{
			make_object_operator(ctn,SemanticTree.basic_function_type.objnoteq,compiler_string_consts.noteq_name,_bool_type);
		}
コード例 #5
0
		private void make_assign_operator(ref_type_node ctn)
		{
			make_object_operator(ctn,SemanticTree.basic_function_type.objassign,compiler_string_consts.assign_name,
				ctn,SemanticTree.parameter_type.var);
		}
コード例 #6
0
		private void make_object_operator(ref_type_node ctn,SemanticTree.basic_function_type bas_ft,string name,
			type_node ret_type)
		{
			make_object_operator(ctn,bas_ft,name,ret_type,SemanticTree.parameter_type.value);
		}
コード例 #7
0
		//No v drugom smisle reference.
		private void make_object_operator(ref_type_node ctn,SemanticTree.basic_function_type bas_ft,
			string name,type_node ret_type,SemanticTree.parameter_type first_parameter_type)
		{
			parameterArrayList pars=new parameterArrayList();
			basic_function_node bfn=new basic_function_node(bas_ft,pars,ret_type);
			bfn.is_overload=true;
			basic_parameter to=new basic_parameter(compiler_string_consts.left_param_name,ctn,
				first_parameter_type,bfn);
			basic_parameter from=new basic_parameter(compiler_string_consts.right_param_name,ctn,
				SemanticTree.parameter_type.value,bfn);
			pars.Add(to);
			pars.Add(from);
			ctn.add_additional_name(name,new SymbolInfo(bfn));
		}
コード例 #8
0
 public void init_reference_type(ref_type_node ctn)
 {
     make_assign_operator(ctn);
     make_equivalence_operator(ctn);
     make_not_equivalence_operator(ctn);
 }
コード例 #9
0
 private void make_not_equivalence_operator(ref_type_node ctn)
 {
     make_object_operator(ctn, SemanticTree.basic_function_type.objnoteq, compiler_string_consts.noteq_name, _bool_type);
 }
コード例 #10
0
 private void make_assign_operator(ref_type_node ctn)
 {
     make_object_operator(ctn, SemanticTree.basic_function_type.objassign, compiler_string_consts.assign_name,
                          ctn, SemanticTree.parameter_type.var);
 }
コード例 #11
0
 private void make_object_operator(ref_type_node ctn, SemanticTree.basic_function_type bas_ft, string name,
                                   type_node ret_type)
 {
     make_object_operator(ctn, bas_ft, name, ret_type, SemanticTree.parameter_type.value);
 }