示例#1
0
        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);
        }