Index: src/Parser/ParseNode.h
===================================================================
--- src/Parser/ParseNode.h	(revision d7dc82447d825854b37e78a7aa777b1a58e7e1b2)
+++ src/Parser/ParseNode.h	(revision daf1af80c44ed2335beaaef08ee5072ea619ef52)
@@ -9,7 +9,7 @@
 // Author           : Rodolfo G. Esteves
 // Created On       : Sat May 16 13:28:16 2015
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Fri Mar 17 15:42:18 2017
-// Update Count     : 777
+// Last Modified By : Andrew Beach
+// Last Modified On : Thu Jun 17 16:23:00 2017
+// Update Count     : 778
 //
 
@@ -393,4 +393,6 @@
 Statement * build_return( ExpressionNode * ctl );
 Statement * build_throw( ExpressionNode * ctl );
+Statement * build_resume( ExpressionNode * ctl );
+Statement * build_resume_at( ExpressionNode * ctl , ExpressionNode * target );
 Statement * build_try( StatementNode * try_stmt, StatementNode * catch_stmt, StatementNode * finally_stmt );
 Statement * build_catch( DeclarationNode * decl, StatementNode * stmt, bool catchAny = false );
Index: src/Parser/StatementNode.cc
===================================================================
--- src/Parser/StatementNode.cc	(revision d7dc82447d825854b37e78a7aa777b1a58e7e1b2)
+++ src/Parser/StatementNode.cc	(revision daf1af80c44ed2335beaaef08ee5072ea619ef52)
@@ -9,7 +9,7 @@
 // Author           : Rodolfo G. Esteves
 // Created On       : Sat May 16 14:59:41 2015
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Thu Feb  2 22:16:40 2017
-// Update Count     : 327
+// Last Modified By : Andrew Beach
+// Last Modified On : Thu Jun  8 16:16:00 2017
+// Update Count     : 328
 //
 
@@ -152,9 +152,24 @@
 	return new ReturnStmt( noLabels, exps.size() > 0 ? exps.back() : nullptr );
 }
+
 Statement *build_throw( ExpressionNode *ctl ) {
 	std::list< Expression * > exps;
 	buildMoveList( ctl, exps );
 	assertf( exps.size() < 2, "This means we are leaking memory");
-	return new ReturnStmt( noLabels, !exps.empty() ? exps.back() : nullptr, true );
+	return new ThrowStmt( noLabels, ThrowStmt::Terminate, !exps.empty() ? exps.back() : nullptr );
+}
+
+Statement *build_resume( ExpressionNode *ctl ) {
+	std::list< Expression * > exps;
+	buildMoveList( ctl, exps );
+	assertf( exps.size() < 2, "This means we are leaking memory");
+	return new ThrowStmt( noLabels, ThrowStmt::Resume, !exps.empty() ? exps.back() : nullptr );
+}
+
+Statement *build_resume_at( ExpressionNode *ctl, ExpressionNode *target ) {
+	std::list< Expression * > exps;
+	buildMoveList( ctl, exps );
+	assertf( exps.size() < 2, "This means we are leaking memory");
+	return new ThrowStmt( noLabels, ThrowStmt::Resume, !exps.empty() ? exps.back() : nullptr );
 }
 
Index: src/Parser/parser.yy
===================================================================
--- src/Parser/parser.yy	(revision d7dc82447d825854b37e78a7aa777b1a58e7e1b2)
+++ src/Parser/parser.yy	(revision daf1af80c44ed2335beaaef08ee5072ea619ef52)
@@ -9,7 +9,7 @@
 // Author           : Peter A. Buhr
 // Created On       : Sat Sep  1 20:22:55 2001
-// Last Modified By : Peter A. Buhr
-// Last Modified On : Thu May 25 15:21:59 2017
-// Update Count     : 2398
+// Last Modified By : Andrew Beach
+// Last Modified On : Thu Jun 25 16:58:00 2017
+// Update Count     : 2399
 //
 
@@ -931,7 +931,7 @@
 		{ $$ = new StatementNode( build_throw( $2 ) ); }
 	| THROWRESUME assignment_expression_opt ';'			// handles reresume
-		{ $$ = new StatementNode( build_throw( $2 ) ); }
+		{ $$ = new StatementNode( build_resume( $2 ) ); }
 	| THROWRESUME assignment_expression_opt AT assignment_expression ';' // handles reresume
-		{ $$ = new StatementNode( build_throw( $2 ) ); }
+		{ $$ = new StatementNode( build_resume_at( $2, $4 ) ); }
 	;
 
