Index: src/Parser/parser.yy
===================================================================
--- src/Parser/parser.yy	(revision f271bdd9abc24c2482997ac111cf741fbf00a1bf)
+++ src/Parser/parser.yy	(revision 0e761e405c325b38ae1fc9d3ac70a15a9a693bc5)
@@ -10,6 +10,6 @@
 // Created On       : Sat Sep  1 20:22:55 2001
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Sat Aug  4 09:38:36 2018
-// Update Count     : 3986
+// Last Modified On : Wed Aug  8 17:50:07 2018
+// Update Count     : 3998
 //
 
@@ -186,8 +186,8 @@
 } // fieldDecl
 
-ForCtrl * forCtrl( ExpressionNode * type, string * index, ExpressionNode * start, ExpressionNode * comp, ExpressionNode * inc ) {
+ForCtrl * forCtrl( ExpressionNode * type, string * index, ExpressionNode * start, enum OperKinds compop, ExpressionNode * comp, ExpressionNode * inc ) {
 	return new ForCtrl(
 		distAttr( DeclarationNode::newTypeof( type ), DeclarationNode::newName( index )->addInitializer( new InitializerNode( start ) ) ),
-		new ExpressionNode( build_binary_val( OperKinds::LThan, new ExpressionNode( build_varref( new string( *index ) ) ), comp ) ),
+		new ExpressionNode( build_binary_val( compop, new ExpressionNode( build_varref( new string( *index ) ) ), comp ) ),
 		new ExpressionNode( build_binary_val( OperKinds::PlusAssn, new ExpressionNode( build_varref( new string( *index ) ) ), inc ) ) );
 } // forCtrl
@@ -227,4 +227,5 @@
 	IfCtrl * ifctl;
 	ForCtrl * fctl;
+	enum OperKinds compop;
 	LabelNode * label;
 	InitializerNode * in;
@@ -289,4 +290,5 @@
 %token ANDassign	ERassign	ORassign				// &=	^=	|=
 
+%token Erange											// ~=
 %token ATassign											// @=
 
@@ -311,4 +313,5 @@
 %type<ifctl> if_control_expression
 %type<fctl> for_control_expression
+%type<compop> inclexcl
 %type<en> subrange
 %type<decl> asm_name_opt
@@ -1135,12 +1138,12 @@
 				$$ = new ForCtrl( (ExpressionNode * )nullptr, (ExpressionNode * )nullptr, (ExpressionNode * )nullptr );
 			} else {
-				$$ = forCtrl( $1, new string( DeclarationNode::anonymous.newName() ), new ExpressionNode( build_constantInteger( *new string( "0" ) ) ), $1->clone(),
+				$$ = forCtrl( $1, new string( DeclarationNode::anonymous.newName() ), new ExpressionNode( build_constantInteger( *new string( "0" ) ) ), OperKinds::LThan, $1->clone(),
 							 new ExpressionNode( build_constantInteger( *new string( "1" ) ) ) );
 			} // if
 		}
-	| constant_expression '~' constant_expression		// CFA
-		{ $$ = forCtrl( $1, new string( DeclarationNode::anonymous.newName() ), $1->clone(), $3, new ExpressionNode( build_constantInteger( *new string( "1" ) ) ) ); }
-	| constant_expression '~' constant_expression '~' constant_expression // CFA
-		{ $$ = forCtrl( $1, new string( DeclarationNode::anonymous.newName() ), $1->clone(), $3, $5 ); }
+	| constant_expression inclexcl constant_expression	// CFA
+		{ $$ = forCtrl( $1, new string( DeclarationNode::anonymous.newName() ), $1->clone(), $2, $3, new ExpressionNode( build_constantInteger( *new string( "1" ) ) ) ); }
+	| constant_expression inclexcl constant_expression '~' constant_expression // CFA
+		{ $$ = forCtrl( $1, new string( DeclarationNode::anonymous.newName() ), $1->clone(), $2, $3, $5 ); }
 	| comma_expression_opt ';' comma_expression			// CFA
 		{
@@ -1151,5 +1154,5 @@
 			} else {
 				if ( NameExpr *identifier = dynamic_cast<NameExpr *>($1->get_expr()) ) {
-					$$ = forCtrl( $3, new string( identifier->name ), new ExpressionNode( build_constantInteger( *new string( "0" ) ) ), $3->clone(),
+					$$ = forCtrl( $3, new string( identifier->name ), new ExpressionNode( build_constantInteger( *new string( "0" ) ) ), OperKinds::LThan, $3->clone(),
 								 new ExpressionNode( build_constantInteger( *new string( "1" ) ) ) );
 				} else {
@@ -1158,5 +1161,5 @@
 			} // if
 		}
-	| comma_expression_opt ';' constant_expression '~' constant_expression // CFA
+	| comma_expression_opt ';' constant_expression inclexcl constant_expression // CFA
 		{
 			if ( ! $1 ) {
@@ -1164,5 +1167,5 @@
 			} else {
 				if ( NameExpr *identifier = dynamic_cast<NameExpr *>($1->get_expr()) ) {
-					$$ = forCtrl( $3, new string( identifier->name ), $3->clone(), $5, new ExpressionNode( build_constantInteger( *new string( "1" ) ) ) );
+					$$ = forCtrl( $3, new string( identifier->name ), $3->clone(), $4, $5, new ExpressionNode( build_constantInteger( *new string( "1" ) ) ) );
 				} else {
 					SemanticError( yylloc, "Expression disallowed. Only loop-index name allowed" ); $$ = nullptr;
@@ -1170,5 +1173,5 @@
 			} // if
 		}
-	| comma_expression_opt ';' constant_expression '~' constant_expression '~' constant_expression // CFA
+	| comma_expression_opt ';' constant_expression inclexcl constant_expression '~' constant_expression // CFA
 		{
 			if ( ! $1 ) {
@@ -1176,5 +1179,5 @@
 			} else {
 				if ( NameExpr *identifier = dynamic_cast<NameExpr *>($1->get_expr()) ) {
-					$$ = forCtrl( $3, new string( identifier->name ), $3->clone(), $5, $7 );
+					$$ = forCtrl( $3, new string( identifier->name ), $3->clone(), $4, $5, $7 );
 				} else {
 					SemanticError( yylloc, "Expression disallowed. Only loop-index name allowed" ); $$ = nullptr;
@@ -1186,4 +1189,11 @@
 	| declaration comma_expression_opt ';' comma_expression_opt // C99, declaration has ';'
 		{ $$ = new ForCtrl( $1, $2, $4 ); }
+ 	;
+
+inclexcl:
+	'~'
+		{ $$ = OperKinds::LThan; }
+	| Erange
+		{ $$ = OperKinds::LEThan; }
  	;
 
