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()); }
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); }
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); }
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); }