亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? scope.cs

?? charp compiler
?? CS
?? 第 1 頁 / 共 2 頁
字號:
        // for finializing scopes after we've resolved a symbol.
        // Locking is also a useful flag to implement lazy evaluation because
        // it lets us check if a scope has been finished.
        bool m_fIsLocked;
        internal void LockScope()
        {
            m_fIsLocked = true;
        }
        internal bool IsLocked
        {
            get { return m_fIsLocked; }
        }
#endregion

    
#region Add & Lookup operations
        /// <summary>
        /// Add a symbol to this scope. (SymEntry contains the string name)        
        /// <seealso cref="AddAliasSymbol"/>
        /// </summary>
        /// <remarks>
        /// Adds the given Symbol to this scope, and indexes it by the symbol's name.        
        /// </remarks>
        /// <param name="s">The symbol to add</param>
        
        public void AddSymbol(SymEntry s) 
        {
            Debug.Assert(!m_fIsLocked, "Can't add to a locked scope");
            Debug.Assert(s != null);
            Debug.Assert(s.Name != null);
            
            // If we try to add the symbol and it's already there, we have a Symbol-Redefinition
            // error. Hashtable.Add() will throw an exception, we catch that, and then throw our
            // own version. 
            // We choose to catch, rather than to check first, because we optimize for the 
            // non-error case.
            try
            {            
                m_table.Add(s.Name, s); // this already throws
            }
            catch(ArgumentException)
            {
                // @todo - How should we handle this error?
                Debug.Assert(false, "@todo - symbol already defined");   
            }
        }
    
        /// <summary>
        /// Add a symbol under an aliased name.
        /// </summary>
        /// <remarks>
        /// Add an existing symbol entry, but indexed under a new name
        /// <para><example>
        /// [globalscope].AddAliasSymbol("int", [SymEntry for System.Int32]);
        /// </example></para>
        /// <seealso cref="AddSymbol"/>
        /// </remarks>
        /// <param name="stAliasName">Aliased name of the symbol</param>
        /// <param name="s">Symbol to add</param>                
        public void AddAliasSymbol(string stAliasName, SymEntry s)
        {                   
            Debug.Assert(!m_fIsLocked, "Can't add to a locked scope");
            m_table.Add(stAliasName, s);
        }
        
        /// <summary>
        /// Do a deep lookup in this scope. This includes super scopes but not lexical parents.
        /// </summary>
        /// <remarks>
        /// <para>If this scope does not have an ILookupController, this is equivalent to 
        /// just calling <see cref="LookupSymbolInThisScopeOnly"/> </para>
        /// <para>else this calls <see cref="ILookupController.SmartLookup"/></para>
        /// </remarks>
        /// <param name="strName">String name to search for</param>
        /// <returns>A symbol added under this name. Null if not found.</returns>
        public SymEntry LookupSymbol(string strName)
        {
            // @todo - we do this when looking for namespaces during import.
            // If it's not there, we add it. 
            // It would be nice to enable this assert though...
            //Debug.Assert(m_fIsLocked, "Don't lookup a symbol in an unlocked scope");
            if (m_pController == null)
                return this.LookupSymbolInThisScopeOnly(strName);
            else
                return m_pController.SmartLookup(strName, this);
        }
        
        /// <summary>
        /// Lookup a SymEntry only in this scope. Don't search super scopes or lexical parents. 
        /// </summary>
        /// <remarks>This is a shallow lookup that does not invoke the ILookupController</remarks>
        /// <param name="strName">String name to search for.</param>
        /// <returns>A symbol added under this name. Null if not found.</returns>
        public SymEntry LookupSymbolInThisScopeOnly(string strName)
        {        
            return (SymEntry) m_table[strName];
        }
        
        // If we don't know the string name and we need to do a more elaborate
        // match (ex, say on parameters), then we have to provide access to our
        // values.
        // So expose an enumerator for the all the SymEntry in this scope.
        public System.Collections.IEnumerator GetEnumerator()
        {
            return this.m_table.Values.GetEnumerator();
        }

#endregion
        
#region Checks    
        #if DEBUG
        // Dump a tree view of the scope tree that this is a root for.
        // Includes the super scopes & lexical parents.
        public void DumpTree()
        {
            Console.WriteLine("** Debug print of current context **");
            Scope s = this;
            int i = 0;
            while (s != null)
            {
                Console.Write("{0}:#{1},{2}", i, s.m_id, s.m_szDebugName);
                
                if (s.m_pController != null)
                {
                    object o = s.m_pController;
                    Console.Write("({0})", o.GetType().Name);
                    s.m_pController.DumpScope(s);
                }
                
                Console.WriteLine();
                i++;
                s = s.LexicalParent;
            }
        }
        
        // Dump all the raw entries
        public void DumpKeys()
        {
            Console.WriteLine("*** Debug dump of keys in scope #{0},{1} [", this.m_id, this.m_szDebugName);
            
            System.Collections.IDictionaryEnumerator e = m_table.GetEnumerator();            
            while (e.MoveNext())
            {
                string str = (string) e.Key;
                SymEntry sym = (SymEntry) e.Value;
                
                Console.WriteLine("{0} is a {1}", str, sym.ToString()); 
            }
            Console.WriteLine("] End dump");
        }
        #endif

        // Verify integrity of all symbol elements in this scope
        public void DebugCheck(ISemanticResolver s)
        {
            System.Collections.IDictionaryEnumerator e = m_table.GetEnumerator();            
            while (e.MoveNext())
            {
                string str = (string) e.Key;
                SymEntry sym = (SymEntry) e.Value;
                
                sym.DebugCheck(s);
            }
        }
        
        // Dump the scope to an xml file
        public void Dump(XmlWriter o, bool fRecursive)
        {   
            o.WriteStartElement("scope");
            o.WriteAttributeString("name", m_szDebugName);

            ILookupController p = this.m_pController;            
            o.WriteAttributeString("controller", (p == null) ? "none" : ((object) p).GetType().Name);
            /*
            if (m_SuperScope != null) 
            {
                o.WriteAttributeString("super", m_SuperScope.m_szDebugName);
            }
            */
            
            System.Collections.IDictionaryEnumerator e = m_table.GetEnumerator();            
            while (e.MoveNext())
            {
                string str = (string) e.Key;
                SymEntry sym = (SymEntry) e.Value;
                
                sym.Dump(o, fRecursive);
            }
        
            o.WriteEndElement(); // scope
        }     
        
        // Debug function
        public void DebugConsoleDump()
        {
            XmlWriter o = new XmlTextWriter(Console.Out);
            bool f = true;
            if (f)
                Dump(o, true);
            else 
                Dump(o, false);
            o.Close();
        }
#endregion        
    } // end class scope

}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品狼人久久影院观看方式| 欧美v亚洲v综合ⅴ国产v| 国产最新精品免费| 日韩中文字幕区一区有砖一区 | 日本一区二区三区久久久久久久久不 | 秋霞电影网一区二区| 亚洲一二三四在线| 亚洲成人动漫在线免费观看| 亚洲国产成人高清精品| 亚洲高清中文字幕| 三级一区在线视频先锋 | 天天综合色天天| 午夜在线成人av| 午夜一区二区三区视频| 婷婷一区二区三区| 美女一区二区在线观看| 美腿丝袜一区二区三区| 国产精品资源在线看| 岛国精品在线观看| 91麻豆免费看片| 欧美性大战久久久久久久| 在线播放亚洲一区| 日韩欧美电影一区| 欧美激情在线一区二区| 中文字幕一区二区三区不卡在线 | 日韩国产欧美在线播放| 免费观看一级欧美片| 国产曰批免费观看久久久| 不卡在线视频中文字幕| 欧美中文字幕不卡| 日韩欧美色电影| 国产精品不卡在线| 午夜精品免费在线| 成人午夜av电影| 91成人国产精品| 欧美成人猛片aaaaaaa| 欧美韩国日本综合| 亚洲午夜精品一区二区三区他趣| 麻豆视频观看网址久久| 91在线云播放| 精品不卡在线视频| 午夜精品一区二区三区三上悠亚| 国内精品免费**视频| 色女孩综合影院| 2020国产精品自拍| 亚洲午夜在线观看视频在线| 国产一区二区福利视频| 欧美三区在线观看| 中文av一区二区| 蜜臀av国产精品久久久久| av电影天堂一区二区在线观看| 欧美精品久久99久久在免费线| 国产欧美日本一区二区三区| 丝袜亚洲另类欧美| 一本色道综合亚洲| 国产欧美精品日韩区二区麻豆天美| 亚洲成人你懂的| 97se亚洲国产综合自在线| 91精品国产欧美一区二区18| 最新不卡av在线| 久久er99热精品一区二区| 欧美日精品一区视频| 亚洲婷婷综合久久一本伊一区| 狠狠网亚洲精品| 日韩欧美国产一区在线观看| 亚洲超丰满肉感bbw| 91一区二区在线观看| 中文字幕久久午夜不卡| 国产精品一区二区无线| 欧美sm美女调教| 青青草97国产精品免费观看| 欧美日韩午夜在线视频| 亚洲一区二区三区四区的| 91丨九色丨黑人外教| 中文字幕精品一区| 国产成人无遮挡在线视频| 精品国产乱码久久久久久夜甘婷婷 | 国产真实乱偷精品视频免| 日韩三级视频中文字幕| 另类小说视频一区二区| 91精品国产一区二区三区蜜臀 | 美女免费视频一区| 日韩欧美激情在线| 久久99精品久久久久久国产越南 | 福利电影一区二区三区| 中文字幕av不卡| 99精品国产91久久久久久| 亚洲欧美一区二区久久| 99久久99久久精品国产片果冻| 国产精品大尺度| 91国产丝袜在线播放| 一区二区三区国产精华| 激情伊人五月天久久综合| 欧美丰满美乳xxx高潮www| 午夜精品成人在线视频| 亚洲欧美一区二区三区孕妇| 91丨国产丨九色丨pron| 亚洲aaa精品| 欧美一级一区二区| 久久www免费人成看片高清| 国产日韩欧美高清在线| 99精品久久99久久久久| 午夜婷婷国产麻豆精品| 欧美精品一区二区三区在线播放| 福利一区二区在线| 亚洲综合激情网| 日韩精品中文字幕在线一区| 成人动漫一区二区在线| 夜夜爽夜夜爽精品视频| 精品国产露脸精彩对白| eeuss影院一区二区三区| 亚洲国产精品尤物yw在线观看| 精品日本一线二线三线不卡| 成人亚洲精品久久久久软件| 亚洲在线一区二区三区| 337p日本欧洲亚洲大胆精品| 99久久精品国产导航| 久久国产成人午夜av影院| 国产精品免费看片| 欧美精品丝袜久久久中文字幕| 精久久久久久久久久久| 亚洲精品精品亚洲| 久久色.com| 欧美丰满少妇xxxbbb| 不卡的av在线播放| 日韩中文字幕区一区有砖一区| 国产精品视频看| 欧美精品免费视频| 日本韩国欧美国产| 成人国产精品免费观看动漫| 日韩高清一级片| 亚洲乱码国产乱码精品精小说| 欧美成人video| 4438x成人网最大色成网站| 成人动漫一区二区在线| 国产乱码精品一区二区三区忘忧草 | 欧美一区二区三区在线| 一本色道久久综合亚洲精品按摩| 精品一区二区免费在线观看| 亚洲午夜激情网站| ●精品国产综合乱码久久久久| 精品久久久久久久人人人人传媒 | 7777精品久久久大香线蕉| 91电影在线观看| 91在线云播放| 99精品欧美一区二区三区小说| 国产精品538一区二区在线| 九色porny丨国产精品| 天天色天天爱天天射综合| 亚洲精品乱码久久久久| 亚洲欧美欧美一区二区三区| 中文文精品字幕一区二区| 久久综合九色综合欧美98| 日韩一区和二区| 日韩三级中文字幕| 精品伦理精品一区| 欧美精品一区二区三区蜜桃视频| 欧美一级理论性理论a| 9191久久久久久久久久久| 欧美日本视频在线| 欧美理论片在线| 欧美一区二区精品久久911| 日韩欧美一卡二卡| www日韩大片| 中文字幕第一区第二区| 日本一区二区三区免费乱视频| 久久综合色婷婷| 国产日产亚洲精品系列| 日本一区二区三区国色天香| 国产精品久99| 亚洲电影你懂得| 日韩电影在线一区| 乱一区二区av| 精品一区二区三区欧美| 国产很黄免费观看久久| 97精品视频在线观看自产线路二| 91啪亚洲精品| 欧美福利视频一区| 久久久影视传媒| 亚洲色图欧美激情| 五月婷婷久久丁香| 国产在线播精品第三| eeuss国产一区二区三区| 欧美视频第二页| 欧美大胆一级视频| 国产精品久久三| 日韩激情一二三区| 国产成人综合在线观看| 在线免费不卡电影| 精品国产乱码久久| 亚洲欧美日韩国产综合在线| 五月婷婷激情综合网| 成人免费黄色在线| 91精品国产色综合久久ai换脸 | 亚洲综合激情小说| 国内外精品视频| 欧美在线短视频| 久久久久综合网| 天天综合网天天综合色| 波多野结衣一区二区三区|