public static void AddUsingListToScope(PascalSharp.Internal.TreeConverter.SymbolTable.Scope scope, using_namespace_list unl) { PascalSharp.Internal.TreeConverter.SymbolTable.UnitPartScope ups = scope as PascalSharp.Internal.TreeConverter.SymbolTable.UnitPartScope; if (ups == null) { return; } foreach (PascalSharp.Internal.TreeConverter.SymbolTable.Scope sc in ups.TopScopeArray) { NetScope netsc = sc as NetScope; if (netsc != null && netsc.used_namespaces.Count == 0) { using_namespace_list new_unl = new using_namespace_list(); foreach (using_namespace un in unl) { SymbolInfoList sil = netsc.FindOnlyInScope(un.namespace_name); if ((sil.First().sym_info as compiled_namespace_node) != null) { new_unl.AddElement(un); } } netsc.used_namespaces = new_unl; } } }
/// <summary> /// Конструктор узла. /// </summary> /// <param name="comprehensive_namespace">Пространство имен, в которое вложено это пространство имен.</param> /// <param name="cont_unit">Модуль, в котором содержится это пространство имен.</param> /// <param name="name">Имя пространства имен.</param> /// <param name="scope">Область видимости пространства имен.</param> /// <param name="loc">Расположения заголовка пространства имен.</param> public common_namespace_node(namespace_node comprehensive_namespace, unit_node cont_unit, string name, PascalSharp.Internal.TreeConverter.SymbolTable.Scope scope, location loc) { _comprehensive_namespace = comprehensive_namespace; _cont_unit = cont_unit; _name = name; _scope = scope; _loc = loc; }