Index: src/Parser/StatementNode.cc
===================================================================
--- src/Parser/StatementNode.cc	(revision 11ab0b4ac211d6b0761a6a74682cd8bc401333bc)
+++ src/Parser/StatementNode.cc	(revision 0bf0b9780fde0c94b2f64272197674ee7f3e3618)
@@ -498,4 +498,9 @@
 } // build_mutex
 
+ast::Stmt * build_corun( const CodeLocation & location, StatementNode * stmt ) {
+	ast::Stmt * body = maybeMoveBuild( stmt );
+	return new ast::CorunStmt( location, body );
+} // build_corun
+
 // Local Variables: //
 // tab-width: 4 //
Index: src/Parser/StatementNode.h
===================================================================
--- src/Parser/StatementNode.h	(revision 11ab0b4ac211d6b0761a6a74682cd8bc401333bc)
+++ src/Parser/StatementNode.h	(revision 0bf0b9780fde0c94b2f64272197674ee7f3e3618)
@@ -105,2 +105,3 @@
 ast::Stmt * build_with( const CodeLocation &, ExpressionNode * exprs, StatementNode * stmt );
 ast::Stmt * build_mutex( const CodeLocation &, ExpressionNode * exprs, StatementNode * stmt );
+ast::Stmt * build_corun( const CodeLocation &, StatementNode * stmt );
Index: src/Parser/parser.yy
===================================================================
--- src/Parser/parser.yy	(revision 11ab0b4ac211d6b0761a6a74682cd8bc401333bc)
+++ src/Parser/parser.yy	(revision 0bf0b9780fde0c94b2f64272197674ee7f3e3618)
@@ -1721,5 +1721,5 @@
 corun_statement:
 	CORUN statement
-		{ SemanticError( yylloc, "corun statement is currently unimplemented." ); $$ = nullptr; }
+		{ $$ = new StatementNode( build_corun( yylloc, $2 ) ); }
 	;
 
