Index: src/Parser/parser.yy
===================================================================
--- src/Parser/parser.yy	(revision a12d5aaf574b9eda122e096ee19ea16b8f778731)
+++ src/Parser/parser.yy	(revision 307a732f5fa4b97b19f405fc215fcd76f473e3a1)
@@ -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 : Wed Jun 28 22:11:22 2017
-// Update Count     : 2414
+// Last Modified By : Andrew Beach
+// Last Modified On : Fri Jun 30 15:38:00 2017
+// Update Count     : 2415
 //
 
@@ -104,4 +104,5 @@
 	std::string * str;
 	bool flag;
+	CatchStmt::Kind catch_kind;
 }
 
@@ -192,4 +193,5 @@
 %type<sn> switch_clause_list_opt		switch_clause_list			choose_clause_list_opt		choose_clause_list
 %type<sn> /* handler_list */			handler_clause				finally_clause
+%type<catch_kind> handler_key
 
 // declarations
@@ -958,17 +960,20 @@
 handler_clause:
 	// TEMPORARY, TEST EXCEPTIONS
-	CATCH '(' push push INTEGERconstant pop ')' compound_statement pop
-		{ $$ = new StatementNode( build_catch( CatchStmt::Terminate, nullptr, new ExpressionNode( build_constantInteger( *$5 ) ), $8 ) ); }
-	| handler_clause CATCH '(' push push INTEGERconstant pop ')' compound_statement pop
-		{ $$ = (StatementNode *)$1->set_last( new StatementNode( build_catch( CatchStmt::Terminate, nullptr, new ExpressionNode( build_constantInteger( *$6 ) ), $9 ) ) ); }
-
-	| CATCH '(' push push exception_declaration pop ')' compound_statement pop
-		{ $$ = new StatementNode( build_catch( CatchStmt::Terminate, $5, nullptr, $8 ) ); }
-	| handler_clause CATCH '(' push push exception_declaration pop ')' compound_statement pop
-		{ $$ = (StatementNode *)$1->set_last( new StatementNode( build_catch( CatchStmt::Terminate, $6, nullptr, $9 ) ) ); }
-	| CATCHRESUME '(' push push exception_declaration pop ')' compound_statement pop
-		{ $$ = new StatementNode( build_catch( CatchStmt::Resume, $5, nullptr, $8 ) ); }
-	| handler_clause CATCHRESUME '(' push push exception_declaration pop ')' compound_statement pop
-		{ $$ = (StatementNode *)$1->set_last( new StatementNode( build_catch( CatchStmt::Resume, $6, nullptr, $9 ) ) ); }
+	handler_key '(' push push INTEGERconstant pop ')' compound_statement pop
+		{ $$ = new StatementNode( build_catch( $1, nullptr, new ExpressionNode( build_constantInteger( *$5 ) ), $8 ) ); }
+	| handler_clause handler_key '(' push push INTEGERconstant pop ')' compound_statement pop
+		{ $$ = (StatementNode *)$1->set_last( new StatementNode( build_catch( $2, nullptr, new ExpressionNode( build_constantInteger( *$6 ) ), $9 ) ) ); }
+
+	| handler_key '(' push push exception_declaration pop ')' compound_statement pop
+		{ $$ = new StatementNode( build_catch( $1, $5, nullptr, $8 ) ); }
+	| handler_clause handler_key '(' push push exception_declaration pop ')' compound_statement pop
+		{ $$ = (StatementNode *)$1->set_last( new StatementNode( build_catch( $2, $6, nullptr, $9 ) ) ); }
+	;
+
+handler_key:
+	CATCH
+		{ $$ = CatchStmt::Terminate; }
+	| CATCHRESUME
+		{ $$ = CatchStmt::Resume; }
 	;
 
