public static Variable GetVariableValue(string name, ParsingScript script = null) { name = Constants.ConvertName(name); ParserFunction impl = null; StackLevel localStack = script != null && script.StackLevel != null ? script.StackLevel : s_locals.Count > StackLevelDelta ? s_lastExecutionLevel : null; if (localStack != null && localStack.Variables.TryGetValue(name, out impl) && impl is GetVarFunction) { return((impl as GetVarFunction).Value); } string scopeName = script == null || script.Filename == null ? "" : script.Filename; impl = GetLocalScopeVariable(name, scopeName); if (impl == null && s_variables.TryGetValue(name, out impl)) { impl = impl.NewInstance(); } if (impl != null && impl is GetVarFunction) { return((impl as GetVarFunction).Value); } return(null); }