コード例 #1
0
        public object VisitSetExpr(SetExpr expr)
        {
            Resolve(expr.Value);
            Resolve(expr.Object);

            return(null);
        }
コード例 #2
0
ファイル: AST_Printer.cs プロジェクト: sirgru/CsLox
        public string Visit_SetExpr(SetExpr expr)
        {
            var name  = (string)expr.name.value;
            var obj   = Parenthesize("", expr.obj);
            var value = Parenthesize("", expr.value);

            return("(Set " + name + " on " + obj + " to " + value + ")");
        }
コード例 #3
0
ファイル: Interpreter.cs プロジェクト: sirgru/CsLox
        public Object Visit_SetExpr(SetExpr expr)
        {
            Object obj = Evaluate(expr.obj);

            if (!(obj is LoxInstance))
            {
                throw new RuntimeException(expr.name.line, expr.name.column, "Only instances have fields.");
            }

            Object value = Evaluate(expr.value);

            ((LoxInstance)obj).Set(expr.name, value);
            return(value);
        }
コード例 #4
0
ファイル: Interpreter.cs プロジェクト: CaptainNic/cslox
        public object VisitSetExpr(SetExpr expr)
        {
            var obj = Evaluate(expr.Object) as LoxInstance;

            if (obj == null)
            {
                throw new LoxRuntimeException(expr.Name, "Only instances have fields.");
            }

            var value = Evaluate(expr.Value);

            obj.Set(expr.Name, value);

            return(value);
        }
コード例 #5
0
 public Void Visit_SetExpr(SetExpr expr)
 {
     Resolve(expr.value);
     Resolve(expr.obj);
     return(null);
 }