示例#1
0
        public Unit VisitReturn(Stmt.Return stmt)
        {
            object result = null;

            if (stmt.Value != null)
            {
                result = Evaluate(stmt.Value);
            }

            throw new Return(result);
        }
示例#2
0
        public object VisitReturnStmt(Stmt.Return stmt)
        {
            object value = null;

            if (stmt.Value != null)
            {
                value = Evaluate(stmt.Value);
            }

            throw new Return(value);
        }
示例#3
0
        object Stmt.IVisitor <object> .VisitReturnStmt(Stmt.Return stmt)
        {
            object value = null;

            if (stmt.value != null)
            {
                value = Evaluate(stmt.value);
            }

            throw new Return(value);
        }
示例#4
0
        public Unit VisitReturn(Stmt.Return stmt)
        {
            if (_currentFunction == FunctionType.None)
            {
                _errors.AddResolverError(stmt.Keyword, "Cannot return from top-level code");
            }

            if (stmt.Value != null)
            {
                Resolve(stmt.Value);
            }

            return(Unit.Default);
        }
示例#5
0
        public object VisitReturnStmt(Stmt.Return stmt)
        {
            if (currentFunction == FunctionType.NONE)
            {
                Lox.Error(stmt.Keyword, "Cannot return from top-level code.");
            }
            else if (currentFunction == FunctionType.INITIALIZER)
            {
                Lox.Error(stmt.Keyword, "cannot return a value from an initializer.");
            }
            if (stmt.Value != null)
            {
                Resolve(stmt.Value);
            }

            return(null);
        }
示例#6
0
文件: Resolver.cs 项目: leddt/cslox
        public Void Visit(Stmt.Return stmt)
        {
            if (currentFunction == FunctionType.None)
            {
                Lox.Error(stmt.Keyword, "Cannot return from top-level code.");
            }

            if (stmt.Value != null)
            {
                if (currentFunction == FunctionType.Initializer)
                {
                    Lox.Error(stmt.Keyword, "Cannot return a value from an initializer.");
                }

                Resolve(stmt.Value);
            }

            return(Void.Instance);
        }
示例#7
0
        object Stmt.IVisitor <object> .VisitReturnStmt(Stmt.Return stmt)
        {
            if (currentFunction == FunctionType.NONE)
            {
                Lox.Error(stmt.keyword, "Cannot return from top-level code.");
            }

            if (stmt.value != null)
            {
                if (currentFunction == FunctionType.INITIALIZER)
                {
                    Lox.Error(stmt.keyword, "Cannot return a value from an initializer.");
                }

                Resolve(stmt.value);
            }

            return(null);
        }
示例#8
0
 public string VisitReturn(Stmt.Return stmt)
 {
     return(Parenthesize("return", stmt.Value));
 }
示例#9
0
        public Void Visit(Stmt.Return stmt)
        {
            var value = stmt.Value != null?Evaluate(stmt.Value) : null;

            throw new ReturnException(value);
        }