public static procedure_definition CreateFunctionDefinitionNode(method_name methName, formal_parameters formalPars, bool ofObject, bool classKeyword, statement procBody, type_definition returnType, SourceContext sc)
            {
                procedure_definition procDef = new procedure_definition();

                function_header procHeader = new function_header();

                procHeader.name           = methName;
                procHeader.source_context = sc;
                if (procHeader.name.meth_name is template_type_name)
                {
                    procHeader.template_args = (procHeader.name.meth_name as template_type_name).template_args;
                    ident id = new ident(procHeader.name.meth_name.name);
                    procHeader.name.meth_name = id;
                }
                procHeader.parameters    = formalPars;
                procHeader.of_object     = ofObject;
                procHeader.class_keyword = classKeyword;
                procHeader.return_type   = returnType;

                statement_list stmtList = new statement_list();

                stmtList.subnodes.Add(procBody);

                block bl = new block(null, null);

                bl.program_code = stmtList;

                procDef.proc_header = procHeader;
                procDef.proc_body   = (proc_block)bl;

                return(procDef);
            }
        public simple_property NewSimplePropertyDefinition(method_name qualified_identifier, property_interface property_interface, property_accessors property_specifiers, proc_attribute virt_over_none_attr, property_array_default array_defaultproperty, LexLocation loc)
        {
            var nnspd = new simple_property();

            nnspd.virt_over_none_attr = virt_over_none_attr;
            List <ident> ln = null;

            if (qualified_identifier.ln != null)
            {
                ln = qualified_identifier.ln;
            }
            else if (qualified_identifier.class_name != null)
            {
                ln = new List <ident>();
                ln.Add(qualified_identifier.class_name);
            }
            nnspd.property_name = new property_ident(qualified_identifier.meth_name.name, ln, qualified_identifier.source_context);
            if (property_interface != null)
            {
                nnspd.parameter_list   = property_interface.parameter_list;
                nnspd.property_type    = property_interface.property_type;
                nnspd.index_expression = property_interface.index_expression;
            }
            if (property_specifiers != null)
            {
                nnspd.accessors = property_specifiers;
            }
            if (array_defaultproperty != null)
            {
                nnspd.array_default = array_defaultproperty;
            }
            nnspd.source_context = loc;
            return(nnspd);
        }
        public procedure_definition lambda(function_lambda_definition _function_lambda_definition)
        {
            procedure_definition _func_def     = new procedure_definition();
            method_name          _method_name1 = new method_name(null, null, new ident(_function_lambda_definition.lambda_name), null);
            //parsertools.create_source_context(_method_name1, _method_name1.meth_name, _method_name1.meth_name);
            function_header _function_header1 = new function_header();

            object rt1 = new object();

            _function_header1.name = _method_name1;
            if (_function_header1.name.meth_name is template_type_name)
            {
                _function_header1.template_args = (_function_header1.name.meth_name as template_type_name).template_args;
                ident id = new ident(_function_header1.name.meth_name.name);
                //parsertools.create_source_context(id, _function_header1.name.meth_name, _function_header1.name.meth_name);
                _function_header1.name.meth_name = id;
            }

            formal_parameters fps = new PascalABCCompiler.SyntaxTree.formal_parameters();

            _function_header1.parameters = _function_lambda_definition.formal_parameters;//fps;

            /*SyntaxTree.named_type_reference _named_type_reference = new SyntaxTree.named_type_reference();
             * SyntaxTree.ident idtype = new SyntaxTree.ident("object");
             * _named_type_reference.source_context = idtype.source_context;
             * _named_type_reference.names.Add(idtype);
             * rt1 = _named_type_reference;
             * _function_header1.return_type = (SyntaxTree.type_definition)_named_type_reference;*/
            _function_header1.return_type = _function_lambda_definition.return_type;

            _function_header1.of_object     = false;
            _function_header1.class_keyword = false;
            token_info _token_info = new token_info("function");
            //_token_info.source_context = parsertools.GetTokenSourceContext();
            //parsertools.create_source_context(_function_header1, _token_info, _token_info);

            block          _block1 = new block(null, null);
            statement_list sl1     = new statement_list();

            sl1.subnodes.Add(_function_lambda_definition.proc_body);
            _block1.program_code  = sl1;
            _func_def.proc_header = _function_header1;
            _func_def.proc_body   = (proc_block)_block1;
            if (_function_lambda_definition.defs != null)
            {
                if (((block)_func_def.proc_body).defs == null)
                {
                    ((block)_func_def.proc_body).defs = new declarations();
                }
                for (int l = 0; l < _function_lambda_definition.defs.Count; l++)
                {
                    ((block)_func_def.proc_body).defs.defs.Add(_function_lambda_definition.defs[l] as procedure_definition);
                }
            }
            _function_lambda_definition.proc_definition = _func_def;
            //parsertools.create_source_context(_func_def, _function_header1, _function_header1);
            return(_func_def);
        }
        public method_name NewQualifiedIdentifier(method_name qualified_identifier, ident identifier, LexLocation loc)
        {
            var nqi = qualified_identifier;

            nqi.class_name     = nqi.meth_name;
            nqi.meth_name      = identifier;
            nqi.source_context = loc;
            return(nqi);
        }
Example #5
0
 public override void visit(method_name _method_name)
 {
     if (_method_name.class_name != null)
     {
         _method_name.class_name.visit(this);
     }
     if (_method_name.explicit_interface_name != null)
     {
         _method_name.explicit_interface_name.visit(this);
     }
     if (_method_name.meth_name != null)
     {
         _method_name.meth_name.visit(this);
     }
 }
        public override void visit(method_name _method_name)
        {
            if (!isInClass)
            {
                return;
            }

            if (_method_name?.meth_name?.name?.ToLower() == compiler_string_consts.deconstruct_method_name)
            {
                deconstructCount++;
            }

            if (deconstructCount > 1)
            {
                throw new SyntaxVisitorError("ONLY_ONE_DECONSTRUCT_ALLOWED", _method_name.Parent.source_context);
            }
        }
Example #7
0
        public simple_property NewSimplePropertyDefinition(method_name qualified_identifier, property_interface property_interface, property_accessors property_specifiers, property_array_default array_defaultproperty, LexLocation loc)
        {
            var nnspd = new simple_property();

            nnspd.property_name = qualified_identifier.meth_name;
            if (property_interface != null)
            {
                nnspd.parameter_list   = property_interface.parameter_list;
                nnspd.property_type    = property_interface.property_type;
                nnspd.index_expression = property_interface.index_expression;
            }
            if (property_specifiers != null)
            {
                nnspd.accessors = property_specifiers;
            }
            if (array_defaultproperty != null)
            {
                nnspd.array_default = array_defaultproperty;
            }
            nnspd.source_context = loc;
            return(nnspd);
        }
Example #8
0
 public override void visit(method_name _method_name)
 {
     prepare_node(_method_name.class_name, "class name");
     prepare_node(_method_name.meth_name, "method_name");
     prepare_node(_method_name.explicit_interface_name, "explicit_interface_name");
 }
Example #9
0
        public static procedure_definition BuildShortProcDefinition(formal_parameters fp, procedure_attributes_list att, method_name name, statement st, SourceContext headsc)
        {
            var ff = new procedure_header(fp, att, name, null, headsc);

            return(BuildShortProcFuncDefinition(ff, st));
        }
Example #10
0
 public override void visit(method_name _method_name)
 {
 }
		public virtual void visit(method_name _method_name)
		{
			DefaultVisit(_method_name);
		}
Example #12
0
 public virtual void visit(method_name _method_name)
 {
     DefaultVisit(_method_name);
 }
Example #13
0
		public virtual void visit(method_name _method_name)
		{
		}
Example #14
0
		public virtual void post_do_visit(method_name _method_name)
		{
		}
Example #15
0
		public override void visit(method_name _method_name)
		{
			DefaultVisit(_method_name);
			pre_do_visit(_method_name);
			for (int i = 0; i < ln.Count; i++)
				visit(method_name.ln[i]);
			visit(method_name.class_name);
			visit(method_name.meth_name);
			visit(method_name.explicit_interface_name);
			post_do_visit(_method_name);
		}
Example #16
0
		public override void visit(method_name _method_name)
		{
			executer.visit(_method_name);
			if (_method_name.class_name != null)
				this.visit((dynamic)_method_name.class_name);
			if (_method_name.meth_name != null)
				this.visit((dynamic)_method_name.meth_name);
			if (_method_name.explicit_interface_name != null)
				this.visit((dynamic)_method_name.explicit_interface_name);
		}
Example #17
0
        public static procedure_definition BuildShortFuncDefinition(formal_parameters fp, procedure_attributes_list att, method_name name, type_definition result, expression ex, SourceContext headsc)
        {
            var ff = new function_header(fp, att, name, null, result, headsc);
            procedure_definition pd = BuildShortProcFuncDefinition(ff, new assign("Result", ex, ex.source_context));

            return(pd);
        }
Example #18
0
 public virtual void visit(method_name _method_name)
 {
 }