示例#1
0
 private void ExecuteThrowStmt(Ast.ThrowStmt stmt, ScriptEnv env)
 {
     if (stmt.HasErrorValues)
     {
         var errorMessage = EvaluateExpr(stmt.Message, env);;
         Throw(env, errorMessage);
     }
     else
     {
         env.DidThrow = true;
     }
 }
示例#2
0
        private Ast.Stmt ParseThrowStmt(TokenQueue q)
        {
            var stmt = new Ast.ThrowStmt {
                SourceToken = q.SourceToken
            };

            q.Take("throw");
            if (PeekExpr(q))
            {
                stmt.HasErrorValues = true;
                stmt.Message        = ParseExpr(q);
            }
            ConsumeSemicolon(q);
            return(stmt);
        }