Beispiel #1
0
        static bool CreateAndDeclareRecursively(IdContainer Container, NamespaceDeclList Out)
        {
            var RetValue = true;
            var State    = Container.State;
            var Scope    = Container as NamespaceScope;

            for (var i = 0; i < Container.Children.Count; i++)
            {
                var e = Container.Children[i];
                if (!CreateAndDeclareRecursively(e, Out))
                {
                    RetValue = false;
                }
            }

            if (Scope != null && Scope.Code.IsValid)
            {
                var NewList = new NamespaceDeclList();
                var Rec     = State.Language.NamespaceDeclRecognizer;
                if (!Rec.Recognize(Scope, NewList) || !NewList.Declare())
                {
                    RetValue = false;
                }

                for (var i = 0; i < NewList.Count; i++)
                {
                    var Decl = NewList[i];
                    if (Decl.Type == NamespaceDeclType.Declare)
                    {
                        if (!CreateAndDeclareRecursively(Decl.NewScope, Out))
                        {
                            RetValue = false;
                        }
                    }

                    Out.Add(Decl);
                }
            }

            return(RetValue);
        }