Beispiel #1
0
        private ElementScope GetParameter(ProcScope func)
        {
            int offset = (int)br.BaseStream.Position - start_pos;

            br.ReadByte();
            string    s  = br.ReadString();
            TypeScope tn = GetTypeReference();
            concrete_parameter_type cpt = (concrete_parameter_type)br.ReadByte();
            ElementScope            p   = new ElementScope(new SymInfo(s, SymbolKind.Parameter, s), tn, null, null);
            bool is_params = br.ReadBoolean();

            if (is_params)
            {
                p.param_kind = parametr_kind.params_parametr;
            }
            else
            {
                switch (cpt)
                {
                case concrete_parameter_type.cpt_const: p.param_kind = parametr_kind.const_parametr; break;

                case concrete_parameter_type.cpt_var: p.param_kind = parametr_kind.var_parametr; break;

                case concrete_parameter_type.cpt_none: p.param_kind = parametr_kind.none; break;
                }
            }
            br.ReadBoolean();
            if (CanReadObject())
            {
                br.ReadInt32(); //CreateExpression();
            }
            br.ReadInt32();     //attributes
            //members[offset] = p;
            return(p);
        }
Beispiel #2
0
 public common_parameter(string name, parameter_type pt,
                         common_function_node cont_function, concrete_parameter_type conc_par_type, location loc) :
     base(name)
 {
     _par_type                = pt;
     _cont_function           = cont_function;
     _concrete_parameter_type = conc_par_type;
     _loc = loc;
 }
Beispiel #3
0
 public common_parameter(string name, type_node tp, parameter_type pt,
                         common_function_node cont_function, concrete_parameter_type conc_par_type, expression_node default_value,
                         location loc) :
     base(name, tp)
 {
     _par_type                = pt;
     _cont_function           = cont_function;
     _concrete_parameter_type = conc_par_type;
     _default_value           = default_value;
     _loc = loc;
 }
Beispiel #4
0
		public common_parameter add_parameter(string name,SemanticTree.parameter_type pt,
			concrete_parameter_type cpt,location loc)
		{
			check_name_free(name,loc);
#if (DEBUG)
			if (converting_block()!=block_type.function_block)
			{
				throw new CompilerInternalError("Parameters can be defined with functions only");
			}
#endif
            common_function_node top_func = _func_stack.top();
			common_parameter cp=new common_parameter(name,pt,top_func,cpt,loc);
			top_func.parameters.AddElement(cp);
			top_func.scope.AddSymbol(name,new SymbolInfo(cp));
			var_defs.Add(cp);
			return cp;
		}
Beispiel #5
0
		public common_parameter(string name,type_node tp,SemanticTree.parameter_type pt,
			common_function_node cont_function, concrete_parameter_type conc_par_type,expression_node default_value,
            location loc):
			base(name,tp)
		{
			_par_type=pt;
			_cont_function=cont_function;
            _concrete_parameter_type = conc_par_type;
            _default_value = default_value;
            _loc = loc;
		}
Beispiel #6
0
 public common_parameter(string name, SemanticTree.parameter_type pt,
     common_function_node cont_function, concrete_parameter_type conc_par_type, location loc) :
     base(name)
 {
     _par_type = pt;
     _cont_function = cont_function;
     _concrete_parameter_type = conc_par_type;
     _loc = loc;
 }