Index: src/Parser/ExpressionNode.cc
===================================================================
--- src/Parser/ExpressionNode.cc	(revision ecb27a78c159c766d7451d66d303686b5959a205)
+++ src/Parser/ExpressionNode.cc	(revision 8b7124e49282b29d403a83a5c5ffe54dc0925768)
@@ -10,6 +10,6 @@
 // Created On       : Sat May 16 13:17:07 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Thu Mar 30 17:02:46 2017
-// Update Count     : 515
+// Last Modified On : Wed May 17 21:31:01 2017
+// Update Count     : 527
 //
 
@@ -207,6 +207,8 @@
 } // build_field_name_fraction_constants
 
+
+
 Expression * build_field_name_REALFRACTIONconstant( const std::string & str ) {
-	assert( str[0] == '.' );
+	if ( str.find_first_not_of( "0123456789", 1 ) != string::npos ) throw SemanticError( "invalid tuple index " + str );
 	Expression * ret = build_constantInteger( *new std::string( str.substr(1) ) );
 	delete &str;
@@ -215,5 +217,5 @@
 
 Expression * build_field_name_REALDECIMALconstant( const std::string & str ) {
-	assert( str[str.size()-1] == '.' );
+	if ( str[str.size()-1] != '.' ) throw SemanticError( "invalid tuple index " + str );
 	Expression * ret = build_constantInteger( *new std::string( str.substr( 0, str.size()-1 ) ) );
 	delete &str;
Index: src/Parser/lex.ll
===================================================================
--- src/Parser/lex.ll	(revision ecb27a78c159c766d7451d66d303686b5959a205)
+++ src/Parser/lex.ll	(revision 8b7124e49282b29d403a83a5c5ffe54dc0925768)
@@ -10,6 +10,6 @@
  * Created On       : Sat Sep 22 08:58:10 2001
  * Last Modified By : Peter A. Buhr
- * Last Modified On : Mon Mar 13 08:36:17 2017
- * Update Count     : 506
+ * Last Modified On : Wed May 17 21:37:51 2017
+ * Update Count     : 510
  */
 
@@ -77,5 +77,5 @@
 				// numeric constants, CFA: '_' in constant
 hex_quad {hex}("_"?{hex}){3}
-integer_suffix "_"?(([uU][lL]?)|([uU]("ll"|"LL")?)|([lL][uU]?)|("ll"|"LL")[uU]?)
+integer_suffix "_"?(([uU][lL]?[lL]?[iI]?)|([uU][iI]?[lL]?[lL]?)|([lL][lL]?[uU]?[iI]?)|([iI][lL]?[lL]?[uU]?))
 
 octal_digits ({octal})|({octal}({octal}|"_")*{octal})
@@ -91,7 +91,7 @@
 
 decimal_digits ({decimal})|({decimal}({decimal}|"_")*{decimal})
-real_decimal {decimal_digits}"."
-real_fraction "."{decimal_digits}
-real_constant {decimal_digits}?{real_fraction}
+real_decimal {decimal_digits}"."{exponent}?{floating_suffix}?
+real_fraction "."{decimal_digits}{exponent}?{floating_suffix}?
+real_constant {decimal_digits}{real_fraction}
 exponent "_"?[eE]"_"?[+-]?{decimal_digits}
 				// GCC: D (double), DL (long double) and iI (imaginary) suffixes
