Esempio n. 1
0
        bool ProcessTypes(List <Identifier> Out)
        {
            var Aliases    = new AliasDeclarationList();
            var Namespaces = NamespaceDeclList.CreateAndDeclareRecursively(this);

            if (Namespaces == null)
            {
                return(false);
            }

            if (!Aliases.RecognizeRecursively(this))
            {
                return(false);
            }
            if (!Aliases.Declare(false))
            {
                return(false);
            }

            var Types = TypeDeclarationList.CreateAndDeclareRecursively(this);

            if (Types == null)
            {
                return(false);
            }

            SearchCommonIdentifiers();
            if (!Aliases.Recognize(Types))
            {
                return(false);
            }
            if (!Aliases.Declare(false))
            {
                return(false);
            }

            var Consts = ConstDeclarationList.CreateAndDeclareRecursively(this);

            if (Consts == null || !Aliases.Declare(false))
            {
                return(false);
            }

            if (!ProcessClassBases(this))
            {
                return(false);
            }
            if (!ProcessScopes(this, Out))
            {
                return(false);
            }

            Flags |= GlobalContainerFlags.StructureMembersParsed;
            if (!ProcessStructureIdentifiers(this))
            {
                return(false);
            }
            return(Aliases.Declare());
        }
Esempio n. 2
0
        public static NamespaceDeclList CreateAndDeclareRecursively(IdContainer Container)
        {
            var Ret = new NamespaceDeclList();

            if (Container.State.Language.NamespaceDeclRecognizer != null)
            {
                if (!CreateAndDeclareRecursively(Container, Ret))
                {
                    return(null);
                }

                if (!Ret.Resolve())
                {
                    return(null);
                }
            }

            return(Ret);
        }
Esempio n. 3
0
        public static NamespaceDeclList Create(NamespaceScope Scope)
        {
            var Ret = new NamespaceDeclList();
            var Rec = Scope.State.Language.NamespaceDeclRecognizer;

            if (Rec != null)
            {
                if (!Rec.Recognize(Scope, Ret))
                {
                    return(null);
                }
                if (!Ret.Resolve())
                {
                    return(null);
                }
            }

            return(Ret);
        }
Esempio n. 4
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);
        }