当前位置: 首页>>代码示例>>C#>>正文


C# Symbol.SetLocation方法代码示例

本文整理汇总了C#中Symbol.SetLocation方法的典型用法代码示例。如果您正苦于以下问题:C# Symbol.SetLocation方法的具体用法?C# Symbol.SetLocation怎么用?C# Symbol.SetLocation使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在Symbol的用法示例。


在下文中一共展示了Symbol.SetLocation方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。

示例1: Update

            /// <summary>
            /// Update a value in the symbol table.
            /// If the symbol is not defined, return false.
            /// Cache the symbol location if not already done.
            /// </summary>
            /// <param name="symbol">The symbol to update.</param>
            /// <param name="val">The new value.</param>
            /// <param name="level">The number of levels to travel to find the definition</param>
            /// <returns>The new value, null if not found.</returns>
            internal SchemeObject Update(Symbol symbol, SchemeObject val, int level)
            {
                var entry = new NameValuePair(symbol.SymbolName, val);
                lock (this.lockObj)
                {
                    if (symbol.Located)
                    {
                        if (level != symbol.Level)
                        {
                            return null;
                        }

                        this.entries[symbol.Pos] = entry;
                        return val;
                    }

                    var index = this.FindSymbol(symbol);
                    if (!SymbolFound(index))
                    {
                        return null;
                    }

                    this.entries[index] = entry;
                    symbol.SetLocation(index, level);
                    return val;
                }
            }
开发者ID:cchayden,项目名称:SimpleScheme,代码行数:36,代码来源:Environment.cs

示例2: AddUnlocked

            /// <summary>
            /// Add a symbol and its value to the environment.
            /// If the symbol is not defined in the environment, add it.
            /// If the symbol is already defined in the envhronment, update its value.
            /// The caller is responsible for locking.
            /// </summary>
            /// <param name="symbol">The symbol name.</param>
            /// <param name="val">The value.</param>
            private void AddUnlocked(Symbol symbol, SchemeObject val)
            {
                var index = this.FindSymbol(symbol);
                if (!SymbolFound(index))
                {
                    this.entries.Add(new NameValuePair(symbol.SymbolName, val));
                    index = this.entries.Count - 1;
                }
                else
                {
                    this.entries[index] = new NameValuePair(symbol.SymbolName, val);
                }

                symbol.SetLocation(index, 0);
            }
开发者ID:cchayden,项目名称:SimpleScheme,代码行数:23,代码来源:Environment.cs

示例3: Lookup

            /// <summary>
            /// Look up a symbol given its name.
            /// If the symbol is not found at this level, then return null and we will continue to search
            /// through the parent environment chain.
            /// </summary>
            /// <param name="symbol">The symbol to look up.</param>
            /// <param name="level">The number of levels to travel to find the definition.  Cached in the symbol the
            ///   first time it is looked up.</param>
            /// <returns>The value of the object looked up, null if not found.</returns>
            internal SchemeObject Lookup(Symbol symbol, int level)
            {
                lock (this.lockObj)
                {
                    if (symbol.Located)
                    {
                        Debug.Assert(level == symbol.Level, "SymbolTable:Lookup level -- symbol.Level");
                        return this.entries[symbol.Pos].Value;
                    }

                    var index = this.FindSymbol(symbol);
                    if (!SymbolFound(index))
                    {
                        return null;
                    }

                    symbol.SetLocation(index, level);
                    return this.entries[index].Value;
                }
            }
开发者ID:cchayden,项目名称:SimpleScheme,代码行数:29,代码来源:Environment.cs


注:本文中的Symbol.SetLocation方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。