--- a/c2iec.y
+++ b/c2iec.y
@@ -545,21 +545,12 @@
 	| jump_statement
 	;
 
-case_statement
-	: labeled_statement
-	| compound_statement
-	| expression_statement
-	| selection_statement
-	| iteration_statement
-	| jump_statement
-	{ strcpy($<str>$, ""); }
-	;
-
 labeled_statement
 	: IDENTIFIER ':' statement
-	| CASE constant_expression ':' case_statement
-	{ sprintf($<str>$, "%s:\n%s",$<str>2, $<str>4); }
+	| CASE constant_expression ':' statement
+	{ sprintf($<str>$, "%s:\n %s",$<str>2, $<str>4); }
 	| DEFAULT ':' statement
+	{ sprintf($<str>$, "\nELSE:\n %s",$<str>3); }
 	;
 
 compound_statement
@@ -590,7 +581,7 @@
 	: IF '(' expression ')' statement
 	| IF '(' expression ')' statement ELSE statement
 	| SWITCH '(' expression ')' statement
-	{ sprintf($<str>$, "CASE %s OF\n %s\nEND_CASE",$<str>3, $<str>5); }
+	{ sprintf($<str>$, "(*switch*)WHILE TRUE DO\nCASE %s OF\n %s\nEND_CASE\n\n(*switch*)EXIT;\n(*switch*)END_WHILE",$<str>3, $<str>5); }
 	;
 
 iteration_statement
@@ -608,6 +599,7 @@
 	: GOTO IDENTIFIER ';'
 	| CONTINUE ';'
 	| BREAK ';'
+	{ sprintf($<str>$, "EXIT;\n"); }
 	| RETURN ';'
 	| RETURN expression ';'
 	;