示例#1
0
        public override JavaScriptObject Evaluate(Scope scope, JavaScriptObject thisObject)
        {
            Node             left  = this.LeftOperand;
            JavaScriptObject value = this.RightOperand.Evaluate(scope, thisObject);

            if (left is VariableNode)
            {
                String name = ((VariableNode)left).Name;
                if (isLocal)
                {
                    scope.SetLocalVariable(name, value);
                }
                else
                {
                    scope.SetVariable(name, value);
                }
            }
            else if (left is LookupNode)
            {
                ((LookupNode)left).Set(value, scope, thisObject);
            }
            else if (left is PropertyNode)
            {
                String name = ((PropertyNode)left).Name;
                thisObject.SetProperty(name, value);
            }
            else
            {
                throw new InvalidTypeException("Left hand of assignment must be a variable.", left.Position);
            }
            return(value);
        }
 public override JavaScriptObject Evaluate(Scope scope, JavaScriptObject thisObject)
 {
     Node left = this.LeftOperand;
     JavaScriptObject value = this.RightOperand.Evaluate(scope, thisObject);
     if (left is VariableNode)
     {
         String name = ((VariableNode)left).Name;
         if (isLocal)
         {
             scope.SetLocalVariable(name, value);
         }
         else
         {
             scope.SetVariable(name, value);
         }
     }
     else if (left is LookupNode)
     {
         ((LookupNode)left).Set(value, scope, thisObject);
     }
     else if (left is PropertyNode)
     {
         String name = ((PropertyNode)left).Name;
         thisObject.SetProperty(name, value);
     }
     else
     {
         throw new InvalidTypeException("Left hand of assignment must be a variable.", left.Position);
     }
     return value;
 }