Scorpio.Runtime.ScriptContext.GetVariable C# (CSharp) Method

GetVariable() private method

private GetVariable ( CodeMember member ) : ScriptObject
member Scorpio.CodeDom.CodeMember
return Scorpio.ScriptObject
        private ScriptObject GetVariable(CodeMember member)
        {
            ScriptObject ret = null;
            if (member.Parent == null) {
                string name = (string)member.MemberValue;
                ScriptObject obj = GetVariableObject(name);
                ret = (obj == null ? m_script.GetValue(name) : obj);
                ret.Name = name;
            } else {
                ScriptObject parent = ResolveOperand(member.Parent);
                /*此处设置一下堆栈位置 否则 函数返回值取值出错会报错位置 例如  
                    function Get() { 
                        return null 
                    } 
                    Get().a
                    
                上述代码报错会报道 return null 那一行 但实际出错 是 .a 的时候 下面这句话就是把堆栈设置回 .a 那一行
                */
                m_script.SetStackInfo(member.StackInfo);
                if (member.Type == MEMBER_TYPE.VALUE) {
                    object name = member.MemberValue;
                    ret = parent.GetValue(name);
                    ret.Name = parent.Name + "." + name.ToString();
                } else {
                    object name = ResolveOperand(member.MemberObject).KeyValue;
                    ret = parent.GetValue(name);
                    ret.Name = parent.Name + "." + name.ToString();
                }
            }
            if (ret == null) throw new ExecutionException(m_script, "GetVariable member is error");
            if (member.Calc != CALC.NONE) {
                ScriptNumber num = ret as ScriptNumber;
                if (num == null) throw new ExecutionException(m_script, "++或者--只能应用于Number类型");
                return num.Calc(member.Calc);
            }
            return ret;
        }
        private void SetVariable(CodeMember member, ScriptObject variable)