/// <summary> /// Gets the value of the specified symbol /// </summary> /// <param name="symbol">Symbol name</param> /// <param name="scopeSymbolNames">Additional symbol name segments</param> /// <param name="startFromGlobal">Should resolution start from global scope?</param> /// <returns> /// Null, if the symbol cannot be found; otherwise, the symbol's value /// </returns> public (ExpressionValue ExprValue, IHasUsageInfo UsageInfo) GetSymbolValue(string symbol, List <string> scopeSymbolNames = null, bool startFromGlobal = false) { var result = (scopeSymbolNames == null || scopeSymbolNames.Count == 0) && !startFromGlobal ? Module.ResolveSimpleSymbol(symbol) : Module.ResolveCompoundSymbol(symbol, scopeSymbolNames, startFromGlobal); return(result.ExprValue != null ? result : ParentContext.GetSymbolValue(symbol, scopeSymbolNames, startFromGlobal)); }
/// <summary> /// Gets the value of the specified symbol /// </summary> /// <param name="symbol">Symbol name</param> /// <param name="startFromGlobal">Should resolution start from global scope?</param> /// <returns> /// Null, if the symbol cannot be found; otherwise, the symbol's value /// </returns> public (ExpressionValue ExprValue, IHasUsageInfo UsageInfo) GetSymbolValue(string symbol, bool startFromGlobal = false) { (ExpressionValue ExprValue, IHasUsageInfo UsageInfo)resolved; if (startFromGlobal) { // --- Most be a compound symbol resolved = Module.ResolveCompoundSymbol(symbol, true); } else if (symbol.Contains(".")) { resolved = Module.ResolveCompoundSymbol(symbol, false); if (resolved.ExprValue == null) { resolved = Module.ResolveSimpleSymbol(symbol); } } else { resolved = Module.ResolveSimpleSymbol(symbol); } return(resolved.ExprValue != null ? resolved : ParentContext.GetSymbolValue(symbol, startFromGlobal)); }