internal GMacAstSymbolsCache(GMacNamespace rootSymbol) { GMacRootAst = rootSymbol.GMacRootAst; RootSymbol = rootSymbol; InitializeDictionaries(rootSymbol.MainSymbols()); }
internal static IEnumerable <ILanguageType> FrameTypes(this GMacNamespace parentNameSpace) { return (Namespaces(parentNameSpace) .SelectMany( nameSpace => nameSpace.ChildFrames.Select(frame => frame.MultivectorType as ILanguageType) .Concat(nameSpace.ChildFrames.SelectMany(frame => frame.Structures)) )); }
internal static IEnumerable <LanguageSymbol> MainSymbols(this GMacNamespace parentNameSpace) { return (parentNameSpace .Namespaces() .SelectMany(MainChilsSymbols) .Concat( parentNameSpace.ChildFrames.SelectMany(MainSymbols) )); }
internal static IEnumerable <SymbolNamedValue> NamedValues(this GMacNamespace parentNameSpace) { return (Namespaces(parentNameSpace) .SelectMany( nameSpace => nameSpace.ChildConstants .Concat(nameSpace.ChildFrames.SelectMany(NamedValues)) )); }
internal static IEnumerable <ILanguageType> Types(this GMacNamespace parentNameSpace) { return (Namespaces(parentNameSpace) .SelectMany( nameSpace => nameSpace .ChildStructures .Concat(nameSpace.ChildFrames.SelectMany(Types)) )); }
internal static IEnumerable <GMacStructure> Structures(this GMacNamespace parentNameSpace) { return (Namespaces(parentNameSpace) .SelectMany( nameSpace => nameSpace.ChildStructures .Concat( nameSpace.ChildFrames.SelectMany(frame => frame.Structures) ) )); }
internal static IEnumerable <GMacConstant> Constants(this GMacNamespace parentNameSpace) { return (Namespaces(parentNameSpace) .SelectMany( nameSpace => nameSpace .ChildConstants .Concat( nameSpace.ChildFrames.SelectMany(frame => frame.ChildConstants) ) )); }
internal static IEnumerable <LanguageSymbol> MainChilsSymbols(this GMacNamespace parentNameSpace) { var roleNames = new[] { RoleNames.Constant, RoleNames.Frame, RoleNames.Macro, RoleNames.Namespace, RoleNames.Structure, RoleNames.Transform }; return(parentNameSpace.ChildScope.Symbols(roleNames)); }
internal static IEnumerable <GMacMacro> Macros(this GMacNamespace parentNameSpace) { return (Namespaces(parentNameSpace) .SelectMany( nameSpace => nameSpace .ChildMacros .Concat( nameSpace.ChildFrames.SelectMany(Macros) ) .Concat( nameSpace.ChildStructures.SelectMany(structure => structure.Macros) ) )); }
internal static IEnumerable <GMacNamespace> Namespaces(this GMacNamespace parentNameSpace) { var stack = new Stack <GMacNamespace>(); stack.Push(parentNameSpace); while (stack.Count > 0) { var nameSpace = stack.Pop(); yield return(nameSpace); foreach (var child in nameSpace.ChildNamespaces) { stack.Push(child); } } }
internal static IEnumerable <GMacMacro> FrameMacros(this GMacNamespace parentNameSpace) { return(Frames(parentNameSpace).SelectMany(nameSpace => nameSpace.ChildMacros)); }
internal static IEnumerable <SymbolNamedValue> FrameNamedValues(this GMacNamespace parentNameSpace) { return(Frames(parentNameSpace).SelectMany(NamedValues)); }
internal static IEnumerable <GMacConstant> FrameConstants(this GMacNamespace parentNameSpace) { return(Frames(parentNameSpace).SelectMany(frame => frame.ChildConstants)); }
internal static IEnumerable <GMacFrame> Frames(this GMacNamespace parentNameSpace) { return(Namespaces(parentNameSpace).SelectMany(nameSpace => nameSpace.ChildFrames)); }
internal static IEnumerable <GMacFrameBasisVector> FrameBasisVectors(this GMacNamespace parentNameSpace) { return(Frames(parentNameSpace).SelectMany(frame => frame.FrameBasisVectors)); }
internal static IEnumerable <GMacFrameMultivector> FrameMultivectors(this GMacNamespace parentNameSpace) { return(Frames(parentNameSpace).Select(frame => frame.MultivectorType)); }
internal bool LookupRootNamespace(string symbolName, out GMacNamespace nameSpace) { return(RootScope.LookupSymbol(symbolName, RoleNames.Namespace, out nameSpace)); }
internal static IEnumerable <GMacConstant> NamespaceConstants(this GMacNamespace parentNameSpace) { return(Namespaces(parentNameSpace).SelectMany(nameSpace => nameSpace.ChildConstants)); }
internal static IEnumerable <GMacStructure> FrameStructures(this GMacNamespace parentNameSpace) { return(Frames(parentNameSpace).SelectMany(frame => frame.Structures)); }
internal static IEnumerable <GMacStructure> NamespaceStructures(this GMacNamespace parentNameSpace) { return(Namespaces(parentNameSpace).SelectMany(nameSpace => nameSpace.ChildStructures)); }
internal bool LookupNamespace(string symbolName, out GMacNamespace outSymbol) { return(ChildSymbolScope.LookupSymbol(symbolName, RoleNames.Namespace, out outSymbol)); }
internal static IEnumerable <GMacMacro> StructureMacros(this GMacNamespace parentNameSpace) { return(Structures(parentNameSpace).SelectMany(nameSpace => nameSpace.Macros)); }