Index: src/Parser/parser.yy
===================================================================
--- src/Parser/parser.yy	(revision 96df13294968c0fe566882e4f20d988ac9275ee4)
+++ src/Parser/parser.yy	(revision 2d2df9f0c3bebad1ce88260fcdd15358167f1ee4)
@@ -10,6 +10,6 @@
 // Created On       : Sat Sep  1 20:22:55 2001
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Thu Feb 14 22:23:13 2019
-// Update Count     : 4217
+// Last Modified On : Wed Feb 20 17:53:55 2019
+// Update Count     : 4231
 //
 
@@ -191,7 +191,8 @@
 	return new ForCtrl(
 		distAttr( DeclarationNode::newTypeof( type, true ), DeclarationNode::newName( index )->addInitializer( new InitializerNode( start ) ) ),
-		new ExpressionNode( build_binary_val( compop, new ExpressionNode( build_varref( new string( *index ) ) ), comp ) ),
-		new ExpressionNode( build_binary_val( compop == OperKinds::LThan || compop == OperKinds::LEThan ? // choose += or -= for upto/downto
-											  OperKinds::PlusAssn : OperKinds::MinusAssn, new ExpressionNode( build_varref( new string( *index ) ) ), inc ) ) );
+		// NULL comp/inc => leave blank
+		comp ? new ExpressionNode( build_binary_val( compop, new ExpressionNode( build_varref( new string( *index ) ) ), comp ) ) : 0,
+		inc ? new ExpressionNode( build_binary_val( compop == OperKinds::LThan || compop == OperKinds::LEThan ? // choose += or -= for upto/downto
+							OperKinds::PlusAssn : OperKinds::MinusAssn, new ExpressionNode( build_varref( new string( *index ) ) ), inc ) ) : 0 );
 } // forCtrl
 
@@ -1168,4 +1169,8 @@
 	| comma_expression ';' comma_expression inclexcl comma_expression '~' comma_expression // CFA
 		{ $$ = forCtrl( $3, $1, $3->clone(), $4, $5, $7 ); }
+	| comma_expression ';' comma_expression '~' '@' '~' comma_expression // CFA
+		{ $$ = forCtrl( $3, $1, $3->clone(), OperKinds::LThan, nullptr, $7 ); }
+	| comma_expression ';' comma_expression '~' '@' '~' '@' // CFA
+		{ $$ = forCtrl( $3, $1, $3->clone(), OperKinds::LThan, nullptr, nullptr ); }
  	;
 
