Index: src/Parser/parser.yy
===================================================================
--- src/Parser/parser.yy	(revision 0db48ca277851afe19811796bd58ac3e63be7448)
+++ src/Parser/parser.yy	(revision 1eec0b03255eb72d14cb9fc93b46b77f5007129f)
@@ -10,6 +10,6 @@
 // Created On       : Sat Sep  1 20:22:55 2001
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Fri Feb 11 14:26:15 2022
-// Update Count     : 5174
+// Last Modified On : Sat Feb 19 09:47:20 2022
+// Update Count     : 5218
 //
 
@@ -1052,4 +1052,6 @@
 	identifier_or_type_name ':' attribute_list_opt statement
 		{ $$ = $4->add_label( $1, $3 ); }
+	| identifier_or_type_name ':' attribute_list_opt error
+		{ SemanticError( yylloc, "previous label must be associated with a statement (where a declaration is not a statement). Move the label or terminate with a semi-colon." ); $$ = nullptr; }
 	;
 
@@ -1086,4 +1088,6 @@
 	| statement_list_nodecl statement
 		{ assert( $1 ); $1->set_last( $2 ); $$ = $1; }
+	| statement_list_nodecl error
+		{ SemanticError( yylloc, "declarations only allowed at the start of the switch body, i.e., after the '{'." ); $$ = nullptr; }
 	;
 
@@ -1093,5 +1097,4 @@
 	| MUTEX '(' ')' comma_expression ';'
 		{ $$ = new StatementNode( build_mutex( nullptr, new StatementNode( build_expr( $4 ) ) ) ); }
-		// { SemanticError( yylloc, "Mutex expression is currently unimplemented." ); $$ = nullptr; }
 	;
 
@@ -1113,4 +1116,6 @@
 			$$ = $7 ? new StatementNode( build_compound( (StatementNode *)((new StatementNode( $7 ))->set_last( sw )) ) ) : sw;
 		}
+	| SWITCH '(' comma_expression ')' '{' error '}'		// CFA
+		{ SemanticError( yylloc, "only declarations can appear before the list of case clauses." ); $$ = nullptr; }
 	| CHOOSE '(' comma_expression ')' case_clause		// CFA
 		{ $$ = new StatementNode( build_switch( false, $3, $5 ) ); }
@@ -1120,4 +1125,6 @@
 			$$ = $7 ? new StatementNode( build_compound( (StatementNode *)((new StatementNode( $7 ))->set_last( sw )) ) ) : sw;
 		}
+	| CHOOSE '(' comma_expression ')' '{' error '}'		// CFA
+		{ SemanticError( yylloc, "only declarations can appear before the list of case clauses." ); $$ = nullptr; }
 	;
 
@@ -1158,14 +1165,14 @@
 
 case_label:												// CFA
-	CASE case_value_list ':'					{ $$ = $2; }
+	CASE error
+		{ SemanticError( yylloc, "missing case list after case." ); $$ = nullptr; }
+	| CASE case_value_list ':'					{ $$ = $2; }
+	| CASE case_value_list error
+		{ SemanticError( yylloc, "missing colon after case list." ); $$ = nullptr; }
 	| DEFAULT ':'								{ $$ = new StatementNode( build_default() ); }
 		// A semantic check is required to ensure only one default clause per switch/choose statement.
-	;
-
-//label_list_opt:
-//	// empty
-//	| identifier_or_type_name ':'
-//	| label_list_opt identifier_or_type_name ':'
-//	;
+	| DEFAULT error
+		{ SemanticError( yylloc, "missing colon after default." ); $$ = nullptr; }
+	;
 
 case_label_list:										// CFA
