Index: src/Parser/parser.yy
===================================================================
--- src/Parser/parser.yy	(revision dbedd71eec11b42a0fc8dee56304dfcd8c0dc084)
+++ src/Parser/parser.yy	(revision 4fee301484ea434817f43aec8028b986fee12fff)
@@ -10,6 +10,6 @@
 // Created On       : Sat Sep  1 20:22:55 2001
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Fri Aug 12 07:59:58 2022
-// Update Count     : 5649
+// Last Modified On : Mon Aug 22 23:05:55 2022
+// Update Count     : 5651
 //
 
@@ -200,4 +200,7 @@
 #define NEW_ONE  new ExpressionNode( build_constantInteger( *new string( "1" ) ) )
 #define UPDOWN( compop, left, right ) (compop == OperKinds::LThan || compop == OperKinds::LEThan ? left : right)
+#define MISSING_ANON_FIELD "Missing loop fields with an anonymous loop index is meaningless as loop index is unavailable in loop body."
+#define MISSING_LOW "Missing low value for up-to range so index is uninitialized."
+#define MISSING_HIGH "Missing high value for down-to range so index is uninitialized."
 
 ForCtrl * forCtrl( DeclarationNode * index, ExpressionNode * start, enum OperKinds compop, ExpressionNode * comp, ExpressionNode * inc ) {
@@ -1331,11 +1334,11 @@
 	| '@' updowneq comma_expression						// CFA
 		{
-			if ( $2 == OperKinds::LThan || $2 == OperKinds::LEThan ) { SemanticError( yylloc, "Missing start value so cannot compare." ); $$ = nullptr; }
+			if ( $2 == OperKinds::LThan || $2 == OperKinds::LEThan ) { SemanticError( yylloc, MISSING_LOW ); $$ = nullptr; }
 			else $$ = forCtrl( $3, new string( DeclarationNode::anonymous.newName() ), $3->clone(), $2, nullptr, NEW_ONE );
 		}
 	| comma_expression updowneq '@'						// CFA
 		{
-			if ( $2 == OperKinds::LThan || $2 == OperKinds::LEThan ) { SemanticError( yylloc, "Missing comparison ('@') with an anonymous loop index is meaningless." ); $$ = nullptr; }
-			else { SemanticError( yylloc, "Missing start value so cannot compare." ); $$ = nullptr; } 
+			if ( $2 == OperKinds::LThan || $2 == OperKinds::LEThan ) { SemanticError( yylloc, MISSING_ANON_FIELD ); $$ = nullptr; }
+			else { SemanticError( yylloc, MISSING_HIGH ); $$ = nullptr; } 
 		}
 	| comma_expression updowneq comma_expression '~' comma_expression // CFA
@@ -1343,20 +1346,22 @@
 	| '@' updowneq comma_expression '~' comma_expression // CFA
 		{
-			if ( $2 == OperKinds::LThan || $2 == OperKinds::LEThan ) { SemanticError( yylloc, "Missing start value so cannot compare." ); $$ = nullptr; }
+			if ( $2 == OperKinds::LThan || $2 == OperKinds::LEThan ) { SemanticError( yylloc, MISSING_LOW ); $$ = nullptr; }
 			else $$ = forCtrl( $3, new string( DeclarationNode::anonymous.newName() ), $3->clone(), $2, nullptr, $5 );
 		}
 	| comma_expression updowneq '@' '~' comma_expression // CFA
 		{
-			if ( $2 == OperKinds::LThan || $2 == OperKinds::LEThan ) { SemanticError( yylloc, "Missing comparison ('@') with an anonymous loop index is meaningless." ); $$ = nullptr; }
-			else { SemanticError( yylloc, "Missing start value so cannot compare." ); $$ = nullptr; } 
+			if ( $2 == OperKinds::LThan || $2 == OperKinds::LEThan ) { SemanticError( yylloc, MISSING_ANON_FIELD ); $$ = nullptr; }
+			else { SemanticError( yylloc, MISSING_HIGH ); $$ = nullptr; } 
 		}
 	| comma_expression updowneq comma_expression '~' '@' // CFA, error
-		{ SemanticError( yylloc, "Missing increment ('@') with an anonymous loop index is meaningless." ); $$ = nullptr; }
+		{ SemanticError( yylloc, MISSING_ANON_FIELD ); $$ = nullptr; }
+	| '@' updowneq '@'									// CFA, error
+		{ SemanticError( yylloc, MISSING_ANON_FIELD ); $$ = nullptr; }
 	| '@' updowneq comma_expression '~' '@'				// CFA, error
-		{ SemanticError( yylloc, "Missing loop fields ('@') with an anonymous loop index is meaningless." ); $$ = nullptr; }
+		{ SemanticError( yylloc, MISSING_ANON_FIELD ); $$ = nullptr; }
 	| comma_expression updowneq '@' '~' '@'				// CFA, error
-		{ SemanticError( yylloc, "Missing loop fields ('@') with an anonymous loop index is meaningless." ); $$ = nullptr; }
+		{ SemanticError( yylloc, MISSING_ANON_FIELD ); $$ = nullptr; }
 	| '@' updowneq '@' '~' '@'							// CFA, error
-		{ SemanticError( yylloc, "Missing loop fields ('@') with an anonymous loop index is meaningless." ); $$ = nullptr; }
+		{ SemanticError( yylloc, MISSING_ANON_FIELD ); $$ = nullptr; }
 
 	| comma_expression ';' comma_expression				// CFA
@@ -1369,15 +1374,15 @@
 	| comma_expression ';' '@' updowneq comma_expression // CFA
 		{
-			if ( $4 == OperKinds::LThan || $4 == OperKinds::LEThan ) { SemanticError( yylloc, "Missing start value so cannot compare." ); $$ = nullptr; }
+			if ( $4 == OperKinds::LThan || $4 == OperKinds::LEThan ) { SemanticError( yylloc, MISSING_LOW ); $$ = nullptr; }
 			else $$ = forCtrl( $5, $1, $5->clone(), $4, nullptr, NEW_ONE );
 		}
 	| comma_expression ';' comma_expression updowneq '@' // CFA
 		{
-			if ( $4 == OperKinds::GThan || $4 == OperKinds::GEThan ) { SemanticError( yylloc, "Missing start value so cannot compare." ); $$ = nullptr; }
-			else if ( $4 == OperKinds::LEThan ) { SemanticError( yylloc, "Equality with missing comparison is meaningless. Use \"~\"." ); $$ = nullptr; }
+			if ( $4 == OperKinds::GThan || $4 == OperKinds::GEThan ) { SemanticError( yylloc, MISSING_HIGH ); $$ = nullptr; }
+			else if ( $4 == OperKinds::LEThan ) { SemanticError( yylloc, "Equality with missing high value is meaningless. Use \"~\"." ); $$ = nullptr; }
 			else $$ = forCtrl( $3, $1, $3->clone(), $4, nullptr, NEW_ONE );
 		}
 	| comma_expression ';' '@' updowneq '@'				// CFA, error
-		{ SemanticError( yylloc, "Missing start value so cannot compare." ); $$ = nullptr; }
+		{ SemanticError( yylloc, "Missing low/high value for up/down-to range so index is uninitialized." ); $$ = nullptr; }
 
 	| comma_expression ';' comma_expression updowneq comma_expression '~' comma_expression // CFA
@@ -1385,11 +1390,11 @@
 	| comma_expression ';' '@' updowneq comma_expression '~' comma_expression // CFA, error
 		{
-			if ( $4 == OperKinds::LThan || $4 == OperKinds::LEThan ) { SemanticError( yylloc, "Missing start value so cannot compare." ); $$ = nullptr; }
+			if ( $4 == OperKinds::LThan || $4 == OperKinds::LEThan ) { SemanticError( yylloc, MISSING_LOW ); $$ = nullptr; }
 			else $$ = forCtrl( $5, $1, $5->clone(), $4, nullptr, $7 );
 		}
 	| comma_expression ';' comma_expression updowneq '@' '~' comma_expression // CFA
 		{
-			if ( $4 == OperKinds::GThan || $4 == OperKinds::GEThan ) { SemanticError( yylloc, "Missing start value so cannot compare." ); $$ = nullptr; }
-			else if ( $4 == OperKinds::LEThan ) { SemanticError( yylloc, "Equality with missing comparison is meaningless. Use \"~\"." ); $$ = nullptr; }
+			if ( $4 == OperKinds::GThan || $4 == OperKinds::GEThan ) { SemanticError( yylloc, MISSING_HIGH ); $$ = nullptr; }
+			else if ( $4 == OperKinds::LEThan ) { SemanticError( yylloc, "Equality with missing high value is meaningless. Use \"~\"." ); $$ = nullptr; }
 			else $$ = forCtrl( $3, $1, $3->clone(), $4, nullptr, $7 );
 		}
@@ -1398,15 +1403,15 @@
 	| comma_expression ';' '@' updowneq comma_expression '~' '@' // CFA, error
 		{
-			if ( $4 == OperKinds::LThan || $4 == OperKinds::LEThan ) { SemanticError( yylloc, "Missing start value so cannot compare." ); $$ = nullptr; }
+			if ( $4 == OperKinds::LThan || $4 == OperKinds::LEThan ) { SemanticError( yylloc, MISSING_LOW ); $$ = nullptr; }
 			else $$ = forCtrl( $5, $1, $5->clone(), $4, nullptr, nullptr );
 		}
 	| comma_expression ';' comma_expression updowneq '@' '~' '@' // CFA
 		{
-			if ( $4 == OperKinds::GThan || $4 == OperKinds::GEThan ) { SemanticError( yylloc, "Missing start value so cannot compare." ); $$ = nullptr; }
-			else if ( $4 == OperKinds::LEThan ) { SemanticError( yylloc, "Equality with missing comparison is meaningless. Use \"~\"." ); $$ = nullptr; }
+			if ( $4 == OperKinds::GThan || $4 == OperKinds::GEThan ) { SemanticError( yylloc, MISSING_HIGH ); $$ = nullptr; }
+			else if ( $4 == OperKinds::LEThan ) { SemanticError( yylloc, "Equality with missing high value is meaningless. Use \"~\"." ); $$ = nullptr; }
 			else $$ = forCtrl( $3, $1, $3->clone(), $4, nullptr, nullptr );
 		}
 	| comma_expression ';' '@' updowneq '@' '~' '@' // CFA
-		{ SemanticError( yylloc, "Missing start value so cannot compare." ); $$ = nullptr; }
+		{ SemanticError( yylloc, "Missing low/high value for up/down-to range so index is uninitialized." ); $$ = nullptr; }
 
 	| declaration comma_expression						// CFA
@@ -1419,11 +1424,11 @@
 	| declaration '@' updowneq comma_expression			// CFA
 		{
-			if ( $3 == OperKinds::LThan || $3 == OperKinds::LEThan ) { SemanticError( yylloc, "Missing start value so cannot compare." ); $$ = nullptr; }
+			if ( $3 == OperKinds::LThan || $3 == OperKinds::LEThan ) { SemanticError( yylloc, MISSING_LOW ); $$ = nullptr; }
 			else $$ = forCtrl( $1, $4, $3, nullptr, NEW_ONE );
 		}
 	| declaration comma_expression updowneq '@'			// CFA
 		{
-			if ( $3 == OperKinds::GThan || $3 == OperKinds::GEThan ) { SemanticError( yylloc, "Missing start value so cannot compare." ); $$ = nullptr; }
-			else if ( $3 == OperKinds::LEThan ) { SemanticError( yylloc, "Equality with missing comparison is meaningless. Use \"~\"." ); $$ = nullptr; }
+			if ( $3 == OperKinds::GThan || $3 == OperKinds::GEThan ) { SemanticError( yylloc, MISSING_HIGH ); $$ = nullptr; }
+			else if ( $3 == OperKinds::LEThan ) { SemanticError( yylloc, "Equality with missing high value is meaningless. Use \"~\"." ); $$ = nullptr; }
 			else $$ = forCtrl( $1, $2, $3, nullptr, NEW_ONE );
 		}
@@ -1433,11 +1438,11 @@
 	| declaration '@' updowneq comma_expression '~' comma_expression // CFA
 		{
-			if ( $3 == OperKinds::LThan || $3 == OperKinds::LEThan ) { SemanticError( yylloc, "Missing start value so cannot compare." ); $$ = nullptr; }
+			if ( $3 == OperKinds::LThan || $3 == OperKinds::LEThan ) { SemanticError( yylloc, MISSING_LOW ); $$ = nullptr; }
 			else $$ = forCtrl( $1, $4, $3, nullptr, $6 );
 		}
 	| declaration comma_expression updowneq '@' '~' comma_expression // CFA
 		{
-			if ( $3 == OperKinds::GThan || $3 == OperKinds::GEThan ) { SemanticError( yylloc, "Missing start value so cannot compare." ); $$ = nullptr; }
-			else if ( $3 == OperKinds::LEThan ) { SemanticError( yylloc, "Equality with missing comparison is meaningless. Use \"~\"." ); $$ = nullptr; }
+			if ( $3 == OperKinds::GThan || $3 == OperKinds::GEThan ) { SemanticError( yylloc, MISSING_HIGH ); $$ = nullptr; }
+			else if ( $3 == OperKinds::LEThan ) { SemanticError( yylloc, "Equality with missing high value is meaningless. Use \"~\"." ); $$ = nullptr; }
 			else $$ = forCtrl( $1, $2, $3, nullptr, $6 );
 		}
@@ -1446,15 +1451,15 @@
 	| declaration '@' updowneq comma_expression '~' '@' // CFA
 		{
-			if ( $3 == OperKinds::LThan || $3 == OperKinds::LEThan ) { SemanticError( yylloc, "Missing start value so cannot compare." ); $$ = nullptr; }
+			if ( $3 == OperKinds::LThan || $3 == OperKinds::LEThan ) { SemanticError( yylloc, MISSING_LOW ); $$ = nullptr; }
 			else $$ = forCtrl( $1, $4, $3, nullptr, nullptr );
 		}
 	| declaration comma_expression updowneq '@' '~' '@'	// CFA
 		{
-			if ( $3 == OperKinds::GThan || $3 == OperKinds::GEThan ) { SemanticError( yylloc, "Missing start value so cannot compare." ); $$ = nullptr; }
-			else if ( $3 == OperKinds::LEThan ) { SemanticError( yylloc, "Equality with missing comparison is meaningless. Use \"~\"." ); $$ = nullptr; }
+			if ( $3 == OperKinds::GThan || $3 == OperKinds::GEThan ) { SemanticError( yylloc, MISSING_HIGH ); $$ = nullptr; }
+			else if ( $3 == OperKinds::LEThan ) { SemanticError( yylloc, "Equality with missing high value is meaningless. Use \"~\"." ); $$ = nullptr; }
 			else $$ = forCtrl( $1, $2, $3, nullptr, nullptr );
 		}
 	| declaration '@' updowneq '@' '~' '@'				// CFA, error
-		{ SemanticError( yylloc, "Missing start value so cannot compare." ); $$ = nullptr; }
+		{ SemanticError( yylloc, "Missing low/high value for up/down-to range so index is uninitialized." ); $$ = nullptr; }
 
 	| comma_expression ';' TYPEDEFname					// CFA, array type
