Exemple #1
0
 public override void visit(declarations _declarations)
 {
     foreach (declaration decl in _declarations.defs)
     {
         decl.visit(this);
     }
 }
Exemple #2
0
 public override void visit(declarations _subprogram_definitions)
 {
     //for(int i=0;i<_subprogram_definitions.defs.Count;i++)
     //{
     //	subprogram_definition sd=_subprogram_definitions.defs[i];
     //	prepare_node(sd,"defs["+i.ToString()+"]");
     //}
     prepare_collection(_subprogram_definitions.defs, "defs");
 }
        // From !LamdaHelper

        public static declarations CreateDeclarations(params declaration[] decls)
        {
            declarations res = new declarations();

            foreach (declaration x in decls)
            {
                res.Add(x);
            }
            return(res);
        }
        /*public override void visit(interface_node node)
         * {
         *  var globals = node.interface_definitions.defs
         *      .Select(def => def as variable_definitions)
         *      .Where(varDefsObj => (object)varDefsObj != null)
         *      .SelectMany(varDefs => varDefs.var_definitions)
         *      .SelectMany(v => v.vars.idents);
         *
         *  CollectedGlobals.UnionWith(globals);
         * }*/

        public override void visit(declarations node)
        {
            var globals = node.defs
                          .Select(def => def as variable_definitions)
                          .Where(varDefsObj => (object)varDefsObj != null)
                          .SelectMany(varDefs => varDefs.var_definitions)
                          .SelectMany(v => v.vars.idents);

            CollectedGlobals.UnionWith(globals);
        }
Exemple #5
0
        public override void visit(declarations decls)
        {
            // Для обхода в правильном порядке сверху вниз
            var vd_s = decls.defs.OfType <variable_definitions>().ToArray();

            for (int i = 0; i < vd_s.Count(); ++i)
            {
                ProcessNode(vd_s[i]);
            }
        }
 public virtual void visit(declarations _declarations)
 {
     DefaultVisit(_declarations);
 }
		public override void visit(declarations _declarations)
		{
			DefaultVisit(_declarations);
			pre_do_visit(_declarations);
			for (int i = 0; i < defs.Count; i++)
				visit(declarations.defs[i]);
			post_do_visit(_declarations);
		}
		public virtual void post_do_visit(declarations _declarations)
		{
		}
 public static SyntaxTree.program_module CreateProgramModule(statement_list statements, declarations defs)
 {
     return(InternalCreateProgramModule(statements, defs));
 }
 public override void visit(declarations _declarations)
 {
     visit_collection(_declarations.defs);
 }
Exemple #11
0
 // If we're at the specified context location, but we're trying to find the most
 // relevant part for C, then we want to pick the part in C.cs not the one in
 // C.NestedType.cs that contains the context location.  This is because this
 // container isn't really used by the user to place code, but is instead just
 // used to separate out the nested type.  It would be nice to detect this and do the
 // right thing.
 declaration = await SelectFirstOrDefaultAsync(
     declarations,
     token.GetRequiredParent().AncestorsAndSelf().Contains,
		public virtual void visit(declarations _declarations)
		{
		}
		public virtual void visit(declarations _declarations)
		{
			DefaultVisit(_declarations);
		}
 public override void visit(declarations _subprogram_definitions)
 {
     get_count(_subprogram_definitions.defs);
 }
Exemple #15
0
 public virtual void visit(declarations _declarations)
 {
 }
Exemple #16
0
 // If we're at the specified context location, but we're trying to find the most
 // relevant part for C, then we want to pick the part in C.cs not the one in
 // C.NestedType.cs that contains the context location.  This is because this
 // container isn't really used by the user to place code, but is instead just
 // used to separate out the nested type.  It would be nice to detect this and do the
 // right thing.
 declaration = await SelectFirstOrDefaultAsync(declarations, token.Parent.AncestorsAndSelf().Contains, cancellationToken).ConfigureAwait(false);
        private static SyntaxTree.program_module InternalCreateProgramModule(statement_list statements, declarations defs)
        {
            block block = new block();

            if (defs != null)
            {
                block.defs = defs;
            }
            statements.Add(new SyntaxTree.empty_statement());
            statements.left_logical_bracket  = new token_info("begin");
            statements.right_logical_bracket = new token_info("end");
            block.program_code = statements;

            program_module res = new program_module();

            res.program_block = block;
            //res.used_units = create_standard_uses_list();
            return(res);
        }
Exemple #18
0
        public static void Substitute(syntax_tree_visitor _visitor, declarations decls, statement_list _statementList)
        {
            var tree   = new CapturedVariablesTreeBuilder(_visitor).BuildTree(_statementList);
            var substs = new CapturedVariablesSubstitutionClassGenerator(tree.RootNode).GenerateSubstitutions();

            new CapturedVariablesSubstitutor(tree.IdentsReferences, substs.GeneratedScopeClassesInfo, substs.LambdasToBeAddedAsMethods, substs.SubstitutionsInfo, tree.CapturedVarsNodesDictionary, substs.ConvertingClassNonPublicMembersMapping, _visitor)
            .Substitute(_statementList);

            if (_visitor.context.converting_block() == block_type.function_block && tree.ProcedureScope != null)
            {
                if (decls != null && decls.defs != null)
                {
                    foreach (var def in decls.defs.Where(d => d is const_definition ||
                                                         d is consts_definitions_list ||
                                                         d is variable_definitions))
                    {
                        var constDef = def as const_definition;
                        if (constDef != null)
                        {
                            var finder = new FindMainIdentsVisitor();
                            finder.ProcessNode(constDef.const_value);

                            foreach (var v in finder.vars)
                            {
                                SymbolInfo si = _visitor.context.find_first(v.name);
                                if (si == null)
                                {
                                    continue;
                                }

                                if (tree.ProcedureScope.VariablesDefinedInScope.Any(var => var.SymbolInfo == si))
                                {
                                    _visitor.AddError(new UsingCapturedParameterIsNotAllowedInInitializers(_visitor.get_location(v)));
                                }
                            }
                            continue;
                        }

                        var constDefList = def as consts_definitions_list;
                        if (constDefList != null)
                        {
                            foreach (var cd in constDefList.const_defs)
                            {
                                var finder = new FindMainIdentsVisitor();
                                finder.ProcessNode(cd.const_value);

                                foreach (var v in finder.vars)
                                {
                                    SymbolInfo si = _visitor.context.find_first(v.name);
                                    if (si == null)
                                    {
                                        continue;
                                    }

                                    if (tree.ProcedureScope.VariablesDefinedInScope.Any(var => var.SymbolInfo == si))
                                    {
                                        _visitor.AddError(new UsingCapturedParameterIsNotAllowedInInitializers(_visitor.get_location(v)));
                                    }
                                }
                            }
                            continue;
                        }

                        var varDefList = def as variable_definitions;
                        if (varDefList != null)
                        {
                            foreach (var d in varDefList.var_definitions)
                            {
                                var finder = new FindMainIdentsVisitor();
                                finder.ProcessNode(d.inital_value);

                                foreach (var v in finder.vars)
                                {
                                    SymbolInfo si = _visitor.context.find_first(v.name);
                                    if (si == null)
                                    {
                                        continue;
                                    }

                                    if (tree.ProcedureScope.VariablesDefinedInScope.Any(var => var.SymbolInfo == si))
                                    {
                                        _visitor.AddError(new UsingCapturedParameterIsNotAllowedInInitializers(_visitor.get_location(v)));
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
		public override void visit(declarations _declarations)
		{
			executer.visit(_declarations);
			if (_declarations.defs != null)
			foreach (dynamic x in _declarations.defs)
				if(x != null)
					this.visit(x);
		}