Example #1
0
        public object VisitCallExpr(Expr.Call expr)
        {
            object callee = Evaluate(expr.callee);

            List <object> arguments = new List <object>();

            foreach (Expr argument in expr.arguments)
            {
                arguments.Add(Evaluate(argument));
            }

            if (!(callee is ICallable))
            {
                throw new RuntimeError(expr.paren,
                                       "Can only call functions and classes.");
            }

            ICallable function = (ICallable)callee;

            if (arguments.Count != function.Arity())
            {
                throw new RuntimeError(expr.paren, "Expected " +
                                       function.Arity() + " arguments but got " +
                                       arguments.Count + ".");
            }

            return(function.Call(this, arguments));
        }
Example #2
0
 public object VisitCallExpr(Expr.Call expr)
 {
     Resolve(expr.callee);
     foreach (var arg in expr.arguments)
     {
         Resolve(arg);
     }
     return(null);
 }
Example #3
0
 public string VisitCallExpr(Expr.Call expr)
 {
     throw new System.NotImplementedException();
 }