Index: src/Parser/ExpressionNode.cc
===================================================================
--- src/Parser/ExpressionNode.cc	(revision cd623a4e93c2eeb566858071f03b3e141d60d50c)
+++ src/Parser/ExpressionNode.cc	(revision 5f2f2d75adcd9f673ef8bda86f25d409347089be)
@@ -10,6 +10,6 @@
 // Created On       : Sat May 16 13:17:07 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Sun Jun  7 07:58:00 2015
-// Update Count     : 135
+// Last Modified On : Mon Jun  8 17:33:40 2015
+// Update Count     : 147
 // 
 
@@ -93,6 +93,5 @@
 static inline bool checkX( char c ) { return c == 'x' || c == 'X'; }
 
-// Very difficult to separate extra parts of constants during lexing because actions are not allow in the middle of
-// patterns:
+// Difficult to separate extra parts of constants during lexing because actions are not allow in the middle of patterns:
 //
 //		prefix action constant action suffix
@@ -130,5 +129,5 @@
 				} // if
 			} else {									// decimal constant ?
-				sscanf( (char *)value.c_str(), "%lld", &v );
+				sscanf( (char *)value.c_str(), "%llu", &v );
 				//printf( "%llu %llu\n", v, v );
 			} // if
@@ -136,24 +135,24 @@
 			if ( v <= INT_MAX ) {						// signed int
 				size = 0;
-			} else if ( v <= UINT_MAX ) {				// unsigned int
+			} else if ( v <= UINT_MAX && ! dec ) {		// unsigned int
 				size = 0;
-				if ( ! dec ) Unsigned = true;			// unsigned
+				Unsigned = true;						// unsigned
 			} else if ( v <= LONG_MAX ) {				// signed long int
 				size = 1;
-			} else if ( v <= ULONG_MAX ) {				// signed long int
+			} else if ( v <= ULONG_MAX && ( ! dec || LONG_MAX == LLONG_MAX ) ) { // signed long int
 				size = 1;
-				if ( ! dec ) Unsigned = true;			// unsigned long int
+				Unsigned = true;						// unsigned long int
 			} else if ( v <= LLONG_MAX ) {				// signed long long int
 				size = 2;
-			} else {									// signed long long int
+			} else {									// unsigned long long int
 				size = 2;
-				if ( ! dec ) Unsigned = true;			// unsigned long long int
+				Unsigned = true;						// unsigned long long int
 			} // if
 
 			if ( checkU( value[last] ) ) {				// suffix 'u' ?
 				Unsigned = true;
-				if ( checkL( value[ last - 1 ] ) ) {	// suffix 'l' ?
+				if ( last > 0 && checkL( value[ last - 1 ] ) ) { // suffix 'l' ?
 					size = 1;
-					if ( checkL( value[ last - 1 ] ) ) { // suffix 'll' ?
+					if ( last > 1 && checkL( value[ last - 2 ] ) ) { // suffix 'll' ?
 						size = 2;
 					} // if
@@ -161,9 +160,13 @@
 			} else if ( checkL( value[ last ] ) ) {		// suffix 'l' ?
 				size = 1;
-				if ( checkL( value[ last - 1 ] ) ) {	// suffix 'll' ?
+				if ( last > 0 && checkL( value[ last - 1 ] ) ) { // suffix 'll' ?
 					size = 2;
-				} // if
-				if ( checkU( value[ last - 1 ] ) ) {	// suffix 'u' ?
-					Unsigned = true;
+					if ( last > 1 && checkU( value[ last - 2 ] ) ) { // suffix 'u' ?
+						Unsigned = true;
+					} // if
+				} else {
+					if ( last > 0 && checkU( value[ last - 1 ] ) ) { // suffix 'u' ?
+						Unsigned = true;
+					} // if
 				} // if
 			} // if
Index: src/Parser/ParseNode.h
===================================================================
--- src/Parser/ParseNode.h	(revision cd623a4e93c2eeb566858071f03b3e141d60d50c)
+++ src/Parser/ParseNode.h	(revision 5f2f2d75adcd9f673ef8bda86f25d409347089be)
@@ -10,6 +10,6 @@
 // Created On       : Sat May 16 13:28:16 2015
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Sun Jun  7 07:42:50 2015
-// Update Count     : 64
+// Last Modified On : Sun Jun  7 22:02:00 2015
+// Update Count     : 65
 //
 
@@ -337,5 +337,5 @@
 
 	bool get_hasEllipsis() const;
-	std::string get_name() const { return name; }
+	const std::string &get_name() const { return name; }
 	LinkageSpec::Type get_linkage() const { return linkage; }
 	DeclarationNode *extractAggregate() const;
Index: src/Parser/lex.cc
===================================================================
--- src/Parser/lex.cc	(revision cd623a4e93c2eeb566858071f03b3e141d60d50c)
+++ src/Parser/lex.cc	(revision 5f2f2d75adcd9f673ef8bda86f25d409347089be)
@@ -1390,8 +1390,8 @@
  * Created On       : Sat Sep 22 08:58:10 2001
  * Last Modified By : Peter A. Buhr
- * Last Modified On : Sun Jun  7 07:14:16 2015
- * Update Count     : 374
- */
-#line 19 "lex.ll"
+ * Last Modified On : Mon Jun  8 20:24:15 2015
+ * Update Count     : 381
+ */
+#line 20 "lex.ll"
 // This lexer assumes the program has been preprocessed by cpp. Hence, all user level preprocessor directive
 // have been performed and removed from the source. The only exceptions are preprocessor directives passed to
@@ -1409,24 +1409,17 @@
 std::string *strtext;									// accumulate parts of character and string constant value
 
+#define RETURN_LOCN(x)		yylval.tok.loc.file = yyfilename; yylval.tok.loc.line = yylineno; return(x)
+#define RETURN_VAL(x)		yylval.tok.str = new std::string( yytext ); RETURN_LOCN(x)
+#define RETURN_CHAR(x)		yylval.tok.str = NULL; RETURN_LOCN(x)
+#define RETURN_STR(x)		yylval.tok.str = strtext; RETURN_LOCN(x)
+
 #define WHITE_RETURN(x)									// do nothing
 #define NEWLINE_RETURN()	WHITE_RETURN('\n')
-#define RETURN_VAL(x)		yylval.tok.str = new std::string( yytext ); \
-		                        yylval.tok.loc.file = yyfilename; \
-		                        yylval.tok.loc.line = yylineno; \
-		                        return(x)
-#define RETURN_STR(x)		yylval.tok.str = strtext; \
-		                        yylval.tok.loc.file = yyfilename; \
-		                        yylval.tok.loc.line = yylineno; \
-		                        return(x)
-
-#define KEYWORD_RETURN(x)	RETURN_VAL(x)				// keyword
+#define ASCIIOP_RETURN()	RETURN_CHAR((int)yytext[0])	// single character operator
+#define NAMEDOP_RETURN(x)	RETURN_VAL(x)				// multichar operator, with a name
+#define NUMERIC_RETURN(x)	rm_underscore(); RETURN_VAL(x) // numeric constant
+#define KEYWORD_RETURN(x)	RETURN_CHAR(x)				// keyword
 #define IDENTIFIER_RETURN()	RETURN_VAL((typedefTable.isIdentifier(yytext) ? IDENTIFIER : typedefTable.isTypedef(yytext) ? TYPEDEFname : TYPEGENname))
-//#define ATTRIBUTE_RETURN()	RETURN_VAL((typedefTable.isIdentifier(yytext) ? ATTR_IDENTIFIER : typedefTable.isTypedef(yytext) ? ATTR_TYPEDEFname : ATTR_TYPEGENname))
 #define ATTRIBUTE_RETURN()	RETURN_VAL(ATTR_IDENTIFIER)
-
-#define ASCIIOP_RETURN()	RETURN_VAL((int)yytext[0])	// single character operator
-#define NAMEDOP_RETURN(x)	RETURN_VAL(x)				// multichar operator, with a name
-
-#define NUMERIC_RETURN(x)	rm_underscore(); RETURN_VAL(x) // numeric constant
 
 void rm_underscore() {
@@ -1455,5 +1448,5 @@
 
 
-#line 1458 "Parser/lex.cc"
+#line 1451 "Parser/lex.cc"
 
 #define INITIAL 0
@@ -1518,6 +1511,4 @@
 #endif
 
-    static void yyunput (int c,char *buf_ptr  );
-    
 #ifndef yytext_ptr
 static void yy_flex_strncpy (char *,yyconst char *,int );
@@ -1649,8 +1640,8 @@
 	register int yy_act;
     
-#line 142 "lex.ll"
+#line 136 "lex.ll"
 
 				   /* line directives */
-#line 1655 "Parser/lex.cc"
+#line 1646 "Parser/lex.cc"
 
 	if ( !(yy_init) )
@@ -1749,5 +1740,5 @@
 /* rule 1 can match eol */
 YY_RULE_SETUP
-#line 144 "lex.ll"
+#line 138 "lex.ll"
 {
 	/* " stop highlighting */
@@ -1776,5 +1767,5 @@
 /* rule 2 can match eol */
 YY_RULE_SETUP
-#line 167 "lex.ll"
+#line 161 "lex.ll"
 ;
 	YY_BREAK
@@ -1782,5 +1773,5 @@
 case 3:
 YY_RULE_SETUP
-#line 170 "lex.ll"
+#line 164 "lex.ll"
 { BEGIN COMMENT; }
 	YY_BREAK
@@ -1788,10 +1779,10 @@
 /* rule 4 can match eol */
 YY_RULE_SETUP
-#line 171 "lex.ll"
+#line 165 "lex.ll"
 ;
 	YY_BREAK
 case 5:
 YY_RULE_SETUP
-#line 172 "lex.ll"
+#line 166 "lex.ll"
 { BEGIN 0; }
 	YY_BREAK
@@ -1800,5 +1791,5 @@
 /* rule 6 can match eol */
 YY_RULE_SETUP
-#line 175 "lex.ll"
+#line 169 "lex.ll"
 ;
 	YY_BREAK
@@ -1806,10 +1797,10 @@
 case 7:
 YY_RULE_SETUP
-#line 178 "lex.ll"
+#line 172 "lex.ll"
 { WHITE_RETURN(' '); }
 	YY_BREAK
 case 8:
 YY_RULE_SETUP
-#line 179 "lex.ll"
+#line 173 "lex.ll"
 { WHITE_RETURN(' '); }
 	YY_BREAK
@@ -1817,5 +1808,5 @@
 /* rule 9 can match eol */
 YY_RULE_SETUP
-#line 180 "lex.ll"
+#line 174 "lex.ll"
 { NEWLINE_RETURN(); }
 	YY_BREAK
@@ -1823,425 +1814,425 @@
 case 10:
 YY_RULE_SETUP
+#line 177 "lex.ll"
+{ KEYWORD_RETURN(ALIGNAS); }			// C11
+	YY_BREAK
+case 11:
+YY_RULE_SETUP
+#line 178 "lex.ll"
+{ KEYWORD_RETURN(ALIGNOF); }			// C11
+	YY_BREAK
+case 12:
+YY_RULE_SETUP
+#line 179 "lex.ll"
+{ KEYWORD_RETURN(ALIGNOF); }			// GCC
+	YY_BREAK
+case 13:
+YY_RULE_SETUP
+#line 180 "lex.ll"
+{ KEYWORD_RETURN(ALIGNOF); }			// GCC
+	YY_BREAK
+case 14:
+YY_RULE_SETUP
+#line 181 "lex.ll"
+{ KEYWORD_RETURN(ASM); }
+	YY_BREAK
+case 15:
+YY_RULE_SETUP
+#line 182 "lex.ll"
+{ KEYWORD_RETURN(ASM); }				// GCC
+	YY_BREAK
+case 16:
+YY_RULE_SETUP
 #line 183 "lex.ll"
-{ KEYWORD_RETURN(ALIGNAS); }			// C11
-	YY_BREAK
-case 11:
+{ KEYWORD_RETURN(ASM); }				// GCC
+	YY_BREAK
+case 17:
 YY_RULE_SETUP
 #line 184 "lex.ll"
-{ KEYWORD_RETURN(ALIGNOF); }			// C11
-	YY_BREAK
-case 12:
+{ KEYWORD_RETURN(ATOMIC); }				// C11
+	YY_BREAK
+case 18:
 YY_RULE_SETUP
 #line 185 "lex.ll"
-{ KEYWORD_RETURN(ALIGNOF); }			// GCC
-	YY_BREAK
-case 13:
+{ KEYWORD_RETURN(ATTRIBUTE); }			// GCC
+	YY_BREAK
+case 19:
 YY_RULE_SETUP
 #line 186 "lex.ll"
-{ KEYWORD_RETURN(ALIGNOF); }			// GCC
-	YY_BREAK
-case 14:
+{ KEYWORD_RETURN(ATTRIBUTE); }			// GCC
+	YY_BREAK
+case 20:
 YY_RULE_SETUP
 #line 187 "lex.ll"
-{ KEYWORD_RETURN(ASM); }
-	YY_BREAK
-case 15:
+{ KEYWORD_RETURN(AUTO); }
+	YY_BREAK
+case 21:
 YY_RULE_SETUP
 #line 188 "lex.ll"
-{ KEYWORD_RETURN(ASM); }				// GCC
-	YY_BREAK
-case 16:
+{ KEYWORD_RETURN(BOOL); }				// C99
+	YY_BREAK
+case 22:
 YY_RULE_SETUP
 #line 189 "lex.ll"
-{ KEYWORD_RETURN(ASM); }				// GCC
-	YY_BREAK
-case 17:
+{ KEYWORD_RETURN(BREAK); }
+	YY_BREAK
+case 23:
 YY_RULE_SETUP
 #line 190 "lex.ll"
-{ KEYWORD_RETURN(ATOMIC); }				// C11
-	YY_BREAK
-case 18:
+{ KEYWORD_RETURN(CASE); }
+	YY_BREAK
+case 24:
 YY_RULE_SETUP
 #line 191 "lex.ll"
-{ KEYWORD_RETURN(ATTRIBUTE); }			// GCC
-	YY_BREAK
-case 19:
+{ KEYWORD_RETURN(CATCH); }				// CFA
+	YY_BREAK
+case 25:
 YY_RULE_SETUP
 #line 192 "lex.ll"
-{ KEYWORD_RETURN(ATTRIBUTE); }			// GCC
-	YY_BREAK
-case 20:
+{ KEYWORD_RETURN(CHAR); }
+	YY_BREAK
+case 26:
 YY_RULE_SETUP
 #line 193 "lex.ll"
-{ KEYWORD_RETURN(AUTO); }
-	YY_BREAK
-case 21:
+{ KEYWORD_RETURN(CHOOSE); }				// CFA
+	YY_BREAK
+case 27:
 YY_RULE_SETUP
 #line 194 "lex.ll"
-{ KEYWORD_RETURN(BOOL); }				// C99
-	YY_BREAK
-case 22:
+{ KEYWORD_RETURN(COMPLEX); }			// C99
+	YY_BREAK
+case 28:
 YY_RULE_SETUP
 #line 195 "lex.ll"
-{ KEYWORD_RETURN(BREAK); }
-	YY_BREAK
-case 23:
+{ KEYWORD_RETURN(COMPLEX); }			// GCC
+	YY_BREAK
+case 29:
 YY_RULE_SETUP
 #line 196 "lex.ll"
-{ KEYWORD_RETURN(CASE); }
-	YY_BREAK
-case 24:
+{ KEYWORD_RETURN(COMPLEX); }			// GCC
+	YY_BREAK
+case 30:
 YY_RULE_SETUP
 #line 197 "lex.ll"
-{ KEYWORD_RETURN(CATCH); }				// CFA
-	YY_BREAK
-case 25:
+{ KEYWORD_RETURN(CONST); }
+	YY_BREAK
+case 31:
 YY_RULE_SETUP
 #line 198 "lex.ll"
-{ KEYWORD_RETURN(CHAR); }
-	YY_BREAK
-case 26:
+{ KEYWORD_RETURN(CONST); }				// GCC
+	YY_BREAK
+case 32:
 YY_RULE_SETUP
 #line 199 "lex.ll"
-{ KEYWORD_RETURN(CHOOSE); }				// CFA
-	YY_BREAK
-case 27:
+{ KEYWORD_RETURN(CONST); }				// GCC
+	YY_BREAK
+case 33:
 YY_RULE_SETUP
 #line 200 "lex.ll"
-{ KEYWORD_RETURN(COMPLEX); }			// C99
-	YY_BREAK
-case 28:
+{ KEYWORD_RETURN(CONTEXT); }			// CFA
+	YY_BREAK
+case 34:
 YY_RULE_SETUP
 #line 201 "lex.ll"
-{ KEYWORD_RETURN(COMPLEX); }			// GCC
-	YY_BREAK
-case 29:
+{ KEYWORD_RETURN(CONTINUE); }
+	YY_BREAK
+case 35:
 YY_RULE_SETUP
 #line 202 "lex.ll"
-{ KEYWORD_RETURN(COMPLEX); }			// GCC
-	YY_BREAK
-case 30:
+{ KEYWORD_RETURN(DEFAULT); }
+	YY_BREAK
+case 36:
 YY_RULE_SETUP
 #line 203 "lex.ll"
-{ KEYWORD_RETURN(CONST); }
-	YY_BREAK
-case 31:
+{ KEYWORD_RETURN(DO); }
+	YY_BREAK
+case 37:
 YY_RULE_SETUP
 #line 204 "lex.ll"
-{ KEYWORD_RETURN(CONST); }				// GCC
-	YY_BREAK
-case 32:
+{ KEYWORD_RETURN(DOUBLE); }
+	YY_BREAK
+case 38:
 YY_RULE_SETUP
 #line 205 "lex.ll"
-{ KEYWORD_RETURN(CONST); }				// GCC
-	YY_BREAK
-case 33:
+{ KEYWORD_RETURN(DTYPE); }				// CFA
+	YY_BREAK
+case 39:
 YY_RULE_SETUP
 #line 206 "lex.ll"
-{ KEYWORD_RETURN(CONTEXT); }			// CFA
-	YY_BREAK
-case 34:
+{ KEYWORD_RETURN(ELSE); }
+	YY_BREAK
+case 40:
 YY_RULE_SETUP
 #line 207 "lex.ll"
-{ KEYWORD_RETURN(CONTINUE); }
-	YY_BREAK
-case 35:
+{ KEYWORD_RETURN(ENUM); }
+	YY_BREAK
+case 41:
 YY_RULE_SETUP
 #line 208 "lex.ll"
-{ KEYWORD_RETURN(DEFAULT); }
-	YY_BREAK
-case 36:
+{ KEYWORD_RETURN(EXTENSION); }			// GCC
+	YY_BREAK
+case 42:
 YY_RULE_SETUP
 #line 209 "lex.ll"
-{ KEYWORD_RETURN(DO); }
-	YY_BREAK
-case 37:
+{ KEYWORD_RETURN(EXTERN); }
+	YY_BREAK
+case 43:
 YY_RULE_SETUP
 #line 210 "lex.ll"
-{ KEYWORD_RETURN(DOUBLE); }
-	YY_BREAK
-case 38:
+{ KEYWORD_RETURN(FALLTHRU); }			// CFA
+	YY_BREAK
+case 44:
 YY_RULE_SETUP
 #line 211 "lex.ll"
-{ KEYWORD_RETURN(DTYPE); }				// CFA
-	YY_BREAK
-case 39:
+{ KEYWORD_RETURN(FINALLY); }			// CFA
+	YY_BREAK
+case 45:
 YY_RULE_SETUP
 #line 212 "lex.ll"
-{ KEYWORD_RETURN(ELSE); }
-	YY_BREAK
-case 40:
+{ KEYWORD_RETURN(FLOAT); }
+	YY_BREAK
+case 46:
 YY_RULE_SETUP
 #line 213 "lex.ll"
-{ KEYWORD_RETURN(ENUM); }
-	YY_BREAK
-case 41:
+{ KEYWORD_RETURN(FLOAT); }				// GCC
+	YY_BREAK
+case 47:
 YY_RULE_SETUP
 #line 214 "lex.ll"
-{ KEYWORD_RETURN(EXTENSION); }			// GCC
-	YY_BREAK
-case 42:
+{ KEYWORD_RETURN(FOR); }
+	YY_BREAK
+case 48:
 YY_RULE_SETUP
 #line 215 "lex.ll"
-{ KEYWORD_RETURN(EXTERN); }
-	YY_BREAK
-case 43:
+{ KEYWORD_RETURN(FORALL); }				// CFA
+	YY_BREAK
+case 49:
 YY_RULE_SETUP
 #line 216 "lex.ll"
-{ KEYWORD_RETURN(FALLTHRU); }			// CFA
-	YY_BREAK
-case 44:
+{ KEYWORD_RETURN(FORTRAN); }
+	YY_BREAK
+case 50:
 YY_RULE_SETUP
 #line 217 "lex.ll"
-{ KEYWORD_RETURN(FINALLY); }			// CFA
-	YY_BREAK
-case 45:
+{ KEYWORD_RETURN(FTYPE); }				// CFA
+	YY_BREAK
+case 51:
 YY_RULE_SETUP
 #line 218 "lex.ll"
-{ KEYWORD_RETURN(FLOAT); }
-	YY_BREAK
-case 46:
+{ KEYWORD_RETURN(GENERIC); }			// C11
+	YY_BREAK
+case 52:
 YY_RULE_SETUP
 #line 219 "lex.ll"
-{ KEYWORD_RETURN(FLOAT); }				// GCC
-	YY_BREAK
-case 47:
+{ KEYWORD_RETURN(GOTO); }
+	YY_BREAK
+case 53:
 YY_RULE_SETUP
 #line 220 "lex.ll"
-{ KEYWORD_RETURN(FOR); }
-	YY_BREAK
-case 48:
+{ KEYWORD_RETURN(IF); }
+	YY_BREAK
+case 54:
 YY_RULE_SETUP
 #line 221 "lex.ll"
-{ KEYWORD_RETURN(FORALL); }				// CFA
-	YY_BREAK
-case 49:
+{ KEYWORD_RETURN(IMAGINARY); }			// C99
+	YY_BREAK
+case 55:
 YY_RULE_SETUP
 #line 222 "lex.ll"
-{ KEYWORD_RETURN(FORTRAN); }
-	YY_BREAK
-case 50:
+{ KEYWORD_RETURN(IMAGINARY); }			// GCC
+	YY_BREAK
+case 56:
 YY_RULE_SETUP
 #line 223 "lex.ll"
-{ KEYWORD_RETURN(FTYPE); }				// CFA
-	YY_BREAK
-case 51:
+{ KEYWORD_RETURN(IMAGINARY); }			// GCC
+	YY_BREAK
+case 57:
 YY_RULE_SETUP
 #line 224 "lex.ll"
-{ KEYWORD_RETURN(GENERIC); }			// C11
-	YY_BREAK
-case 52:
+{ KEYWORD_RETURN(INLINE); }				// C99
+	YY_BREAK
+case 58:
 YY_RULE_SETUP
 #line 225 "lex.ll"
-{ KEYWORD_RETURN(GOTO); }
-	YY_BREAK
-case 53:
+{ KEYWORD_RETURN(INLINE); }				// GCC
+	YY_BREAK
+case 59:
 YY_RULE_SETUP
 #line 226 "lex.ll"
-{ KEYWORD_RETURN(IF); }
-	YY_BREAK
-case 54:
+{ KEYWORD_RETURN(INLINE); }				// GCC
+	YY_BREAK
+case 60:
 YY_RULE_SETUP
 #line 227 "lex.ll"
-{ KEYWORD_RETURN(IMAGINARY); }			// C99
-	YY_BREAK
-case 55:
+{ KEYWORD_RETURN(INT); }
+	YY_BREAK
+case 61:
 YY_RULE_SETUP
 #line 228 "lex.ll"
-{ KEYWORD_RETURN(IMAGINARY); }			// GCC
-	YY_BREAK
-case 56:
+{ KEYWORD_RETURN(INT); }				// GCC
+	YY_BREAK
+case 62:
 YY_RULE_SETUP
 #line 229 "lex.ll"
-{ KEYWORD_RETURN(IMAGINARY); }			// GCC
-	YY_BREAK
-case 57:
+{ KEYWORD_RETURN(LABEL); }				// GCC
+	YY_BREAK
+case 63:
 YY_RULE_SETUP
 #line 230 "lex.ll"
-{ KEYWORD_RETURN(INLINE); }				// C99
-	YY_BREAK
-case 58:
+{ KEYWORD_RETURN(LONG); }
+	YY_BREAK
+case 64:
 YY_RULE_SETUP
 #line 231 "lex.ll"
-{ KEYWORD_RETURN(INLINE); }				// GCC
-	YY_BREAK
-case 59:
+{ KEYWORD_RETURN(LVALUE); }				// CFA
+	YY_BREAK
+case 65:
 YY_RULE_SETUP
 #line 232 "lex.ll"
-{ KEYWORD_RETURN(INLINE); }				// GCC
-	YY_BREAK
-case 60:
+{ KEYWORD_RETURN(NORETURN); }			// C11
+	YY_BREAK
+case 66:
 YY_RULE_SETUP
 #line 233 "lex.ll"
-{ KEYWORD_RETURN(INT); }
-	YY_BREAK
-case 61:
+{ KEYWORD_RETURN(REGISTER); }
+	YY_BREAK
+case 67:
 YY_RULE_SETUP
 #line 234 "lex.ll"
-{ KEYWORD_RETURN(INT); }				// GCC
-	YY_BREAK
-case 62:
+{ KEYWORD_RETURN(RESTRICT); }			// C99
+	YY_BREAK
+case 68:
 YY_RULE_SETUP
 #line 235 "lex.ll"
-{ KEYWORD_RETURN(LABEL); }				// GCC
-	YY_BREAK
-case 63:
+{ KEYWORD_RETURN(RESTRICT); }			// GCC
+	YY_BREAK
+case 69:
 YY_RULE_SETUP
 #line 236 "lex.ll"
-{ KEYWORD_RETURN(LONG); }
-	YY_BREAK
-case 64:
+{ KEYWORD_RETURN(RESTRICT); }			// GCC
+	YY_BREAK
+case 70:
 YY_RULE_SETUP
 #line 237 "lex.ll"
-{ KEYWORD_RETURN(LVALUE); }				// CFA
-	YY_BREAK
-case 65:
+{ KEYWORD_RETURN(RETURN); }
+	YY_BREAK
+case 71:
 YY_RULE_SETUP
 #line 238 "lex.ll"
-{ KEYWORD_RETURN(NORETURN); }			// C11
-	YY_BREAK
-case 66:
+{ KEYWORD_RETURN(SHORT); }
+	YY_BREAK
+case 72:
 YY_RULE_SETUP
 #line 239 "lex.ll"
-{ KEYWORD_RETURN(REGISTER); }
-	YY_BREAK
-case 67:
+{ KEYWORD_RETURN(SIGNED); }
+	YY_BREAK
+case 73:
 YY_RULE_SETUP
 #line 240 "lex.ll"
-{ KEYWORD_RETURN(RESTRICT); }			// C99
-	YY_BREAK
-case 68:
+{ KEYWORD_RETURN(SIGNED); }				// GCC
+	YY_BREAK
+case 74:
 YY_RULE_SETUP
 #line 241 "lex.ll"
-{ KEYWORD_RETURN(RESTRICT); }			// GCC
-	YY_BREAK
-case 69:
+{ KEYWORD_RETURN(SIGNED); }				// GCC
+	YY_BREAK
+case 75:
 YY_RULE_SETUP
 #line 242 "lex.ll"
-{ KEYWORD_RETURN(RESTRICT); }			// GCC
-	YY_BREAK
-case 70:
+{ KEYWORD_RETURN(SIZEOF); }
+	YY_BREAK
+case 76:
 YY_RULE_SETUP
 #line 243 "lex.ll"
-{ KEYWORD_RETURN(RETURN); }
-	YY_BREAK
-case 71:
+{ KEYWORD_RETURN(STATIC); }
+	YY_BREAK
+case 77:
 YY_RULE_SETUP
 #line 244 "lex.ll"
-{ KEYWORD_RETURN(SHORT); }
-	YY_BREAK
-case 72:
+{ KEYWORD_RETURN(STATICASSERT); }		// C11
+	YY_BREAK
+case 78:
 YY_RULE_SETUP
 #line 245 "lex.ll"
-{ KEYWORD_RETURN(SIGNED); }
-	YY_BREAK
-case 73:
+{ KEYWORD_RETURN(STRUCT); }
+	YY_BREAK
+case 79:
 YY_RULE_SETUP
 #line 246 "lex.ll"
-{ KEYWORD_RETURN(SIGNED); }				// GCC
-	YY_BREAK
-case 74:
+{ KEYWORD_RETURN(SWITCH); }
+	YY_BREAK
+case 80:
 YY_RULE_SETUP
 #line 247 "lex.ll"
-{ KEYWORD_RETURN(SIGNED); }				// GCC
-	YY_BREAK
-case 75:
+{ KEYWORD_RETURN(THREADLOCAL); }		// C11
+	YY_BREAK
+case 81:
 YY_RULE_SETUP
 #line 248 "lex.ll"
-{ KEYWORD_RETURN(SIZEOF); }
-	YY_BREAK
-case 76:
+{ KEYWORD_RETURN(THROW); }				// CFA
+	YY_BREAK
+case 82:
 YY_RULE_SETUP
 #line 249 "lex.ll"
-{ KEYWORD_RETURN(STATIC); }
-	YY_BREAK
-case 77:
+{ KEYWORD_RETURN(TRY); }				// CFA
+	YY_BREAK
+case 83:
 YY_RULE_SETUP
 #line 250 "lex.ll"
-{ KEYWORD_RETURN(STATICASSERT); }		// C11
-	YY_BREAK
-case 78:
+{ KEYWORD_RETURN(TYPE); }				// CFA
+	YY_BREAK
+case 84:
 YY_RULE_SETUP
 #line 251 "lex.ll"
-{ KEYWORD_RETURN(STRUCT); }
-	YY_BREAK
-case 79:
+{ KEYWORD_RETURN(TYPEDEF); }
+	YY_BREAK
+case 85:
 YY_RULE_SETUP
 #line 252 "lex.ll"
-{ KEYWORD_RETURN(SWITCH); }
-	YY_BREAK
-case 80:
+{ KEYWORD_RETURN(TYPEOF); }				// GCC
+	YY_BREAK
+case 86:
 YY_RULE_SETUP
 #line 253 "lex.ll"
-{ KEYWORD_RETURN(THREADLOCAL); }		// C11
-	YY_BREAK
-case 81:
+{ KEYWORD_RETURN(TYPEOF); }				// GCC
+	YY_BREAK
+case 87:
 YY_RULE_SETUP
 #line 254 "lex.ll"
-{ KEYWORD_RETURN(THROW); }				// CFA
-	YY_BREAK
-case 82:
+{ KEYWORD_RETURN(TYPEOF); }				// GCC
+	YY_BREAK
+case 88:
 YY_RULE_SETUP
 #line 255 "lex.ll"
-{ KEYWORD_RETURN(TRY); }				// CFA
-	YY_BREAK
-case 83:
+{ KEYWORD_RETURN(UNION); }
+	YY_BREAK
+case 89:
 YY_RULE_SETUP
 #line 256 "lex.ll"
-{ KEYWORD_RETURN(TYPE); }				// CFA
-	YY_BREAK
-case 84:
+{ KEYWORD_RETURN(UNSIGNED); }
+	YY_BREAK
+case 90:
 YY_RULE_SETUP
 #line 257 "lex.ll"
-{ KEYWORD_RETURN(TYPEDEF); }
-	YY_BREAK
-case 85:
+{ KEYWORD_RETURN(VOID); }
+	YY_BREAK
+case 91:
 YY_RULE_SETUP
 #line 258 "lex.ll"
-{ KEYWORD_RETURN(TYPEOF); }				// GCC
-	YY_BREAK
-case 86:
+{ KEYWORD_RETURN(VOLATILE); }
+	YY_BREAK
+case 92:
 YY_RULE_SETUP
 #line 259 "lex.ll"
-{ KEYWORD_RETURN(TYPEOF); }				// GCC
-	YY_BREAK
-case 87:
+{ KEYWORD_RETURN(VOLATILE); }			// GCC
+	YY_BREAK
+case 93:
 YY_RULE_SETUP
 #line 260 "lex.ll"
-{ KEYWORD_RETURN(TYPEOF); }				// GCC
-	YY_BREAK
-case 88:
+{ KEYWORD_RETURN(VOLATILE); }			// GCC
+	YY_BREAK
+case 94:
 YY_RULE_SETUP
 #line 261 "lex.ll"
-{ KEYWORD_RETURN(UNION); }
-	YY_BREAK
-case 89:
-YY_RULE_SETUP
-#line 262 "lex.ll"
-{ KEYWORD_RETURN(UNSIGNED); }
-	YY_BREAK
-case 90:
-YY_RULE_SETUP
-#line 263 "lex.ll"
-{ KEYWORD_RETURN(VOID); }
-	YY_BREAK
-case 91:
-YY_RULE_SETUP
-#line 264 "lex.ll"
-{ KEYWORD_RETURN(VOLATILE); }
-	YY_BREAK
-case 92:
-YY_RULE_SETUP
-#line 265 "lex.ll"
-{ KEYWORD_RETURN(VOLATILE); }			// GCC
-	YY_BREAK
-case 93:
-YY_RULE_SETUP
-#line 266 "lex.ll"
-{ KEYWORD_RETURN(VOLATILE); }			// GCC
-	YY_BREAK
-case 94:
-YY_RULE_SETUP
-#line 267 "lex.ll"
 { KEYWORD_RETURN(WHILE); }
 	YY_BREAK
@@ -2249,25 +2240,25 @@
 case 95:
 YY_RULE_SETUP
-#line 270 "lex.ll"
+#line 264 "lex.ll"
 { IDENTIFIER_RETURN(); }
 	YY_BREAK
 case 96:
 YY_RULE_SETUP
-#line 271 "lex.ll"
+#line 265 "lex.ll"
 { ATTRIBUTE_RETURN(); }
 	YY_BREAK
 case 97:
 YY_RULE_SETUP
-#line 272 "lex.ll"
+#line 266 "lex.ll"
 { BEGIN BKQUOTE; }
 	YY_BREAK
 case 98:
 YY_RULE_SETUP
-#line 273 "lex.ll"
+#line 267 "lex.ll"
 { IDENTIFIER_RETURN(); }
 	YY_BREAK
 case 99:
 YY_RULE_SETUP
-#line 274 "lex.ll"
+#line 268 "lex.ll"
 { BEGIN 0; }
 	YY_BREAK
@@ -2275,35 +2266,35 @@
 case 100:
 YY_RULE_SETUP
+#line 271 "lex.ll"
+{ NUMERIC_RETURN(ZERO); }				// CFA
+	YY_BREAK
+case 101:
+YY_RULE_SETUP
+#line 272 "lex.ll"
+{ NUMERIC_RETURN(ONE); }				// CFA
+	YY_BREAK
+case 102:
+YY_RULE_SETUP
+#line 273 "lex.ll"
+{ NUMERIC_RETURN(INTEGERconstant); }
+	YY_BREAK
+case 103:
+YY_RULE_SETUP
+#line 274 "lex.ll"
+{ NUMERIC_RETURN(INTEGERconstant); }
+	YY_BREAK
+case 104:
+YY_RULE_SETUP
+#line 275 "lex.ll"
+{ NUMERIC_RETURN(INTEGERconstant); }
+	YY_BREAK
+case 105:
+YY_RULE_SETUP
+#line 276 "lex.ll"
+{ NUMERIC_RETURN(FLOATINGconstant); }
+	YY_BREAK
+case 106:
+YY_RULE_SETUP
 #line 277 "lex.ll"
-{ NUMERIC_RETURN(ZERO); }				// CFA
-	YY_BREAK
-case 101:
-YY_RULE_SETUP
-#line 278 "lex.ll"
-{ NUMERIC_RETURN(ONE); }				// CFA
-	YY_BREAK
-case 102:
-YY_RULE_SETUP
-#line 279 "lex.ll"
-{ NUMERIC_RETURN(INTEGERconstant); }
-	YY_BREAK
-case 103:
-YY_RULE_SETUP
-#line 280 "lex.ll"
-{ NUMERIC_RETURN(INTEGERconstant); }
-	YY_BREAK
-case 104:
-YY_RULE_SETUP
-#line 281 "lex.ll"
-{ NUMERIC_RETURN(INTEGERconstant); }
-	YY_BREAK
-case 105:
-YY_RULE_SETUP
-#line 282 "lex.ll"
-{ NUMERIC_RETURN(FLOATINGconstant); }
-	YY_BREAK
-case 106:
-YY_RULE_SETUP
-#line 283 "lex.ll"
 { NUMERIC_RETURN(FLOATINGconstant); }
 	YY_BREAK
@@ -2311,10 +2302,10 @@
 case 107:
 YY_RULE_SETUP
-#line 286 "lex.ll"
+#line 280 "lex.ll"
 { BEGIN QUOTE; rm_underscore(); strtext = new std::string; *strtext += std::string( yytext ); }
 	YY_BREAK
 case 108:
 YY_RULE_SETUP
-#line 287 "lex.ll"
+#line 281 "lex.ll"
 { *strtext += std::string( yytext ); }
 	YY_BREAK
@@ -2322,5 +2313,5 @@
 /* rule 109 can match eol */
 YY_RULE_SETUP
-#line 288 "lex.ll"
+#line 282 "lex.ll"
 { BEGIN 0; *strtext += std::string( yytext); RETURN_STR(CHARACTERconstant); }
 	YY_BREAK
@@ -2329,10 +2320,10 @@
 case 110:
 YY_RULE_SETUP
-#line 292 "lex.ll"
+#line 286 "lex.ll"
 { BEGIN STRING; rm_underscore(); strtext = new std::string; *strtext += std::string( yytext ); }
 	YY_BREAK
 case 111:
 YY_RULE_SETUP
-#line 293 "lex.ll"
+#line 287 "lex.ll"
 { *strtext += std::string( yytext ); }
 	YY_BREAK
@@ -2340,5 +2331,5 @@
 /* rule 112 can match eol */
 YY_RULE_SETUP
-#line 294 "lex.ll"
+#line 288 "lex.ll"
 { BEGIN 0; *strtext += std::string( yytext ); RETURN_STR(STRINGliteral); }
 	YY_BREAK
@@ -2347,5 +2338,5 @@
 case 113:
 YY_RULE_SETUP
-#line 298 "lex.ll"
+#line 292 "lex.ll"
 { rm_underscore(); *strtext += std::string( yytext ); }
 	YY_BREAK
@@ -2353,10 +2344,10 @@
 /* rule 114 can match eol */
 YY_RULE_SETUP
-#line 299 "lex.ll"
+#line 293 "lex.ll"
 {}						// continuation (ALSO HANDLED BY CPP)
 	YY_BREAK
 case 115:
 YY_RULE_SETUP
-#line 300 "lex.ll"
+#line 294 "lex.ll"
 { *strtext += std::string( yytext ); } // unknown escape character
 	YY_BREAK
@@ -2364,55 +2355,55 @@
 case 116:
 YY_RULE_SETUP
+#line 297 "lex.ll"
+{ ASCIIOP_RETURN(); }
+	YY_BREAK
+case 117:
+YY_RULE_SETUP
+#line 298 "lex.ll"
+{ ASCIIOP_RETURN(); }
+	YY_BREAK
+case 118:
+YY_RULE_SETUP
+#line 299 "lex.ll"
+{ ASCIIOP_RETURN(); }
+	YY_BREAK
+case 119:
+YY_RULE_SETUP
+#line 300 "lex.ll"
+{ ASCIIOP_RETURN(); }
+	YY_BREAK
+case 120:
+YY_RULE_SETUP
+#line 301 "lex.ll"
+{ ASCIIOP_RETURN(); }
+	YY_BREAK
+case 121:
+YY_RULE_SETUP
+#line 302 "lex.ll"
+{ ASCIIOP_RETURN(); }
+	YY_BREAK
+case 122:
+YY_RULE_SETUP
 #line 303 "lex.ll"
-{ ASCIIOP_RETURN(); }
-	YY_BREAK
-case 117:
+{ ASCIIOP_RETURN(); }					// also operator
+	YY_BREAK
+case 123:
 YY_RULE_SETUP
 #line 304 "lex.ll"
 { ASCIIOP_RETURN(); }
 	YY_BREAK
-case 118:
+case 124:
 YY_RULE_SETUP
 #line 305 "lex.ll"
 { ASCIIOP_RETURN(); }
 	YY_BREAK
-case 119:
+case 125:
 YY_RULE_SETUP
 #line 306 "lex.ll"
-{ ASCIIOP_RETURN(); }
-	YY_BREAK
-case 120:
+{ ASCIIOP_RETURN(); }					// also operator
+	YY_BREAK
+case 126:
 YY_RULE_SETUP
 #line 307 "lex.ll"
-{ ASCIIOP_RETURN(); }
-	YY_BREAK
-case 121:
-YY_RULE_SETUP
-#line 308 "lex.ll"
-{ ASCIIOP_RETURN(); }
-	YY_BREAK
-case 122:
-YY_RULE_SETUP
-#line 309 "lex.ll"
-{ ASCIIOP_RETURN(); }					// also operator
-	YY_BREAK
-case 123:
-YY_RULE_SETUP
-#line 310 "lex.ll"
-{ ASCIIOP_RETURN(); }
-	YY_BREAK
-case 124:
-YY_RULE_SETUP
-#line 311 "lex.ll"
-{ ASCIIOP_RETURN(); }
-	YY_BREAK
-case 125:
-YY_RULE_SETUP
-#line 312 "lex.ll"
-{ ASCIIOP_RETURN(); }					// also operator
-	YY_BREAK
-case 126:
-YY_RULE_SETUP
-#line 313 "lex.ll"
 { NAMEDOP_RETURN(ELLIPSIS); }
 	YY_BREAK
@@ -2420,20 +2411,20 @@
 case 127:
 YY_RULE_SETUP
-#line 316 "lex.ll"
+#line 310 "lex.ll"
 { RETURN_VAL('['); }
 	YY_BREAK
 case 128:
 YY_RULE_SETUP
-#line 317 "lex.ll"
+#line 311 "lex.ll"
 { RETURN_VAL(']'); }
 	YY_BREAK
 case 129:
 YY_RULE_SETUP
-#line 318 "lex.ll"
+#line 312 "lex.ll"
 { RETURN_VAL('{'); }
 	YY_BREAK
 case 130:
 YY_RULE_SETUP
-#line 319 "lex.ll"
+#line 313 "lex.ll"
 { RETURN_VAL('}'); }
 	YY_BREAK
@@ -2441,175 +2432,175 @@
 case 131:
 YY_RULE_SETUP
+#line 316 "lex.ll"
+{ ASCIIOP_RETURN(); }
+	YY_BREAK
+case 132:
+YY_RULE_SETUP
+#line 317 "lex.ll"
+{ ASCIIOP_RETURN(); }
+	YY_BREAK
+case 133:
+YY_RULE_SETUP
+#line 318 "lex.ll"
+{ ASCIIOP_RETURN(); }
+	YY_BREAK
+case 134:
+YY_RULE_SETUP
+#line 319 "lex.ll"
+{ ASCIIOP_RETURN(); }
+	YY_BREAK
+case 135:
+YY_RULE_SETUP
+#line 320 "lex.ll"
+{ ASCIIOP_RETURN(); }
+	YY_BREAK
+case 136:
+YY_RULE_SETUP
+#line 321 "lex.ll"
+{ ASCIIOP_RETURN(); }
+	YY_BREAK
+case 137:
+YY_RULE_SETUP
 #line 322 "lex.ll"
 { ASCIIOP_RETURN(); }
 	YY_BREAK
-case 132:
+case 138:
 YY_RULE_SETUP
 #line 323 "lex.ll"
 { ASCIIOP_RETURN(); }
 	YY_BREAK
-case 133:
+case 139:
 YY_RULE_SETUP
 #line 324 "lex.ll"
 { ASCIIOP_RETURN(); }
 	YY_BREAK
-case 134:
+case 140:
 YY_RULE_SETUP
 #line 325 "lex.ll"
 { ASCIIOP_RETURN(); }
 	YY_BREAK
-case 135:
+case 141:
 YY_RULE_SETUP
 #line 326 "lex.ll"
 { ASCIIOP_RETURN(); }
 	YY_BREAK
-case 136:
+case 142:
 YY_RULE_SETUP
 #line 327 "lex.ll"
 { ASCIIOP_RETURN(); }
 	YY_BREAK
-case 137:
+case 143:
 YY_RULE_SETUP
 #line 328 "lex.ll"
 { ASCIIOP_RETURN(); }
 	YY_BREAK
-case 138:
+case 144:
 YY_RULE_SETUP
 #line 329 "lex.ll"
 { ASCIIOP_RETURN(); }
 	YY_BREAK
-case 139:
-YY_RULE_SETUP
-#line 330 "lex.ll"
-{ ASCIIOP_RETURN(); }
-	YY_BREAK
-case 140:
+case 145:
 YY_RULE_SETUP
 #line 331 "lex.ll"
-{ ASCIIOP_RETURN(); }
-	YY_BREAK
-case 141:
+{ NAMEDOP_RETURN(ICR); }
+	YY_BREAK
+case 146:
 YY_RULE_SETUP
 #line 332 "lex.ll"
-{ ASCIIOP_RETURN(); }
-	YY_BREAK
-case 142:
+{ NAMEDOP_RETURN(DECR); }
+	YY_BREAK
+case 147:
 YY_RULE_SETUP
 #line 333 "lex.ll"
-{ ASCIIOP_RETURN(); }
-	YY_BREAK
-case 143:
+{ NAMEDOP_RETURN(EQ); }
+	YY_BREAK
+case 148:
 YY_RULE_SETUP
 #line 334 "lex.ll"
-{ ASCIIOP_RETURN(); }
-	YY_BREAK
-case 144:
+{ NAMEDOP_RETURN(NE); }
+	YY_BREAK
+case 149:
 YY_RULE_SETUP
 #line 335 "lex.ll"
-{ ASCIIOP_RETURN(); }
-	YY_BREAK
-case 145:
+{ NAMEDOP_RETURN(LS); }
+	YY_BREAK
+case 150:
+YY_RULE_SETUP
+#line 336 "lex.ll"
+{ NAMEDOP_RETURN(RS); }
+	YY_BREAK
+case 151:
 YY_RULE_SETUP
 #line 337 "lex.ll"
-{ NAMEDOP_RETURN(ICR); }
-	YY_BREAK
-case 146:
+{ NAMEDOP_RETURN(LE); }
+	YY_BREAK
+case 152:
 YY_RULE_SETUP
 #line 338 "lex.ll"
-{ NAMEDOP_RETURN(DECR); }
-	YY_BREAK
-case 147:
+{ NAMEDOP_RETURN(GE); }
+	YY_BREAK
+case 153:
 YY_RULE_SETUP
 #line 339 "lex.ll"
-{ NAMEDOP_RETURN(EQ); }
-	YY_BREAK
-case 148:
+{ NAMEDOP_RETURN(ANDAND); }
+	YY_BREAK
+case 154:
 YY_RULE_SETUP
 #line 340 "lex.ll"
-{ NAMEDOP_RETURN(NE); }
-	YY_BREAK
-case 149:
+{ NAMEDOP_RETURN(OROR); }
+	YY_BREAK
+case 155:
 YY_RULE_SETUP
 #line 341 "lex.ll"
-{ NAMEDOP_RETURN(LS); }
-	YY_BREAK
-case 150:
+{ NAMEDOP_RETURN(ARROW); }
+	YY_BREAK
+case 156:
 YY_RULE_SETUP
 #line 342 "lex.ll"
-{ NAMEDOP_RETURN(RS); }
-	YY_BREAK
-case 151:
+{ NAMEDOP_RETURN(PLUSassign); }
+	YY_BREAK
+case 157:
 YY_RULE_SETUP
 #line 343 "lex.ll"
-{ NAMEDOP_RETURN(LE); }
-	YY_BREAK
-case 152:
+{ NAMEDOP_RETURN(MINUSassign); }
+	YY_BREAK
+case 158:
 YY_RULE_SETUP
 #line 344 "lex.ll"
-{ NAMEDOP_RETURN(GE); }
-	YY_BREAK
-case 153:
+{ NAMEDOP_RETURN(MULTassign); }
+	YY_BREAK
+case 159:
 YY_RULE_SETUP
 #line 345 "lex.ll"
-{ NAMEDOP_RETURN(ANDAND); }
-	YY_BREAK
-case 154:
+{ NAMEDOP_RETURN(DIVassign); }
+	YY_BREAK
+case 160:
 YY_RULE_SETUP
 #line 346 "lex.ll"
-{ NAMEDOP_RETURN(OROR); }
-	YY_BREAK
-case 155:
+{ NAMEDOP_RETURN(MODassign); }
+	YY_BREAK
+case 161:
 YY_RULE_SETUP
 #line 347 "lex.ll"
-{ NAMEDOP_RETURN(ARROW); }
-	YY_BREAK
-case 156:
+{ NAMEDOP_RETURN(ANDassign); }
+	YY_BREAK
+case 162:
 YY_RULE_SETUP
 #line 348 "lex.ll"
-{ NAMEDOP_RETURN(PLUSassign); }
-	YY_BREAK
-case 157:
+{ NAMEDOP_RETURN(ORassign); }
+	YY_BREAK
+case 163:
 YY_RULE_SETUP
 #line 349 "lex.ll"
-{ NAMEDOP_RETURN(MINUSassign); }
-	YY_BREAK
-case 158:
+{ NAMEDOP_RETURN(ERassign); }
+	YY_BREAK
+case 164:
 YY_RULE_SETUP
 #line 350 "lex.ll"
-{ NAMEDOP_RETURN(MULTassign); }
-	YY_BREAK
-case 159:
+{ NAMEDOP_RETURN(LSassign); }
+	YY_BREAK
+case 165:
 YY_RULE_SETUP
 #line 351 "lex.ll"
-{ NAMEDOP_RETURN(DIVassign); }
-	YY_BREAK
-case 160:
-YY_RULE_SETUP
-#line 352 "lex.ll"
-{ NAMEDOP_RETURN(MODassign); }
-	YY_BREAK
-case 161:
-YY_RULE_SETUP
-#line 353 "lex.ll"
-{ NAMEDOP_RETURN(ANDassign); }
-	YY_BREAK
-case 162:
-YY_RULE_SETUP
-#line 354 "lex.ll"
-{ NAMEDOP_RETURN(ORassign); }
-	YY_BREAK
-case 163:
-YY_RULE_SETUP
-#line 355 "lex.ll"
-{ NAMEDOP_RETURN(ERassign); }
-	YY_BREAK
-case 164:
-YY_RULE_SETUP
-#line 356 "lex.ll"
-{ NAMEDOP_RETURN(LSassign); }
-	YY_BREAK
-case 165:
-YY_RULE_SETUP
-#line 357 "lex.ll"
 { NAMEDOP_RETURN(RSassign); }
 	YY_BREAK
@@ -2617,15 +2608,15 @@
 case 166:
 YY_RULE_SETUP
-#line 360 "lex.ll"
+#line 354 "lex.ll"
 { IDENTIFIER_RETURN(); }				// unary
 	YY_BREAK
 case 167:
 YY_RULE_SETUP
-#line 361 "lex.ll"
+#line 355 "lex.ll"
 { IDENTIFIER_RETURN(); }
 	YY_BREAK
 case 168:
 YY_RULE_SETUP
-#line 362 "lex.ll"
+#line 356 "lex.ll"
 { IDENTIFIER_RETURN(); }		// binary
 	YY_BREAK
@@ -2658,5 +2649,5 @@
 case 169:
 YY_RULE_SETUP
-#line 389 "lex.ll"
+#line 383 "lex.ll"
 {
 	// 1 or 2 character unary operator ?
@@ -2673,13 +2664,13 @@
 case 170:
 YY_RULE_SETUP
-#line 401 "lex.ll"
+#line 395 "lex.ll"
 { printf("unknown character(s):\"%s\" on line %d\n", yytext, yylineno); }
 	YY_BREAK
 case 171:
 YY_RULE_SETUP
-#line 403 "lex.ll"
+#line 397 "lex.ll"
 ECHO;
 	YY_BREAK
-#line 2684 "Parser/lex.cc"
+#line 2675 "Parser/lex.cc"
 case YY_STATE_EOF(INITIAL):
 case YY_STATE_EOF(COMMENT):
@@ -3013,45 +3004,4 @@
 
 	return yy_is_jam ? 0 : yy_current_state;
-}
-
-    static void yyunput (int c, register char * yy_bp )
-{
-	register char *yy_cp;
-    
-    yy_cp = (yy_c_buf_p);
-
-	/* undo effects of setting up yytext */
-	*yy_cp = (yy_hold_char);
-
-	if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
-		{ /* need to shift things up to make room */
-		/* +2 for EOB chars. */
-		register int number_to_move = (yy_n_chars) + 2;
-		register char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[
-					YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2];
-		register char *source =
-				&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move];
-
-		while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
-			*--dest = *--source;
-
-		yy_cp += (int) (dest - source);
-		yy_bp += (int) (dest - source);
-		YY_CURRENT_BUFFER_LVALUE->yy_n_chars =
-			(yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_buf_size;
-
-		if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
-			YY_FATAL_ERROR( "flex scanner push-back overflow" );
-		}
-
-	*--yy_cp = (char) c;
-
-    if ( c == '\n' ){
-        --yylineno;
-    }
-
-	(yytext_ptr) = yy_bp;
-	(yy_hold_char) = *yy_cp;
-	(yy_c_buf_p) = yy_cp;
 }
 
@@ -3697,5 +3647,5 @@
 #define YYTABLES_NAME "yytables"
 
-#line 403 "lex.ll"
+#line 397 "lex.ll"
 
 
Index: src/Parser/lex.h
===================================================================
--- src/Parser/lex.h	(revision cd623a4e93c2eeb566858071f03b3e141d60d50c)
+++ src/Parser/lex.h	(revision 5f2f2d75adcd9f673ef8bda86f25d409347089be)
@@ -10,6 +10,6 @@
 // Created On       : Sat Sep 22 08:58:10 2001
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Sat Jun  6 07:44:39 2015
-// Update Count     : 338
+// Last Modified On : Mon Jun  8 20:28:48 2015
+// Update Count     : 341
 //
 
@@ -18,5 +18,5 @@
 
 int yylex();
-void yyerror(char *);
+void yyerror( const char * );
 
 // External declarations for information sharing between lexer and scanner
@@ -35,5 +35,5 @@
 class Token {
   public:
-    std::string *str;
+    std::string *str;									// must be pointer as used in union
     Location loc;
 
@@ -44,5 +44,4 @@
 
 // Local Variables: //
-// fill-column: 110 //
 // tab-width: 4 //
 // mode: c++ //
Index: src/Parser/lex.ll
===================================================================
--- src/Parser/lex.ll	(revision cd623a4e93c2eeb566858071f03b3e141d60d50c)
+++ src/Parser/lex.ll	(revision 5f2f2d75adcd9f673ef8bda86f25d409347089be)
@@ -10,9 +10,10 @@
  * Created On       : Sat Sep 22 08:58:10 2001
  * Last Modified By : Peter A. Buhr
- * Last Modified On : Sun Jun  7 07:14:16 2015
- * Update Count     : 374
+ * Last Modified On : Mon Jun  8 20:24:15 2015
+ * Update Count     : 381
  */
 
 %option yylineno
+%option nounput
 
 %{
@@ -32,24 +33,17 @@
 std::string *strtext;									// accumulate parts of character and string constant value
 
+#define RETURN_LOCN(x)		yylval.tok.loc.file = yyfilename; yylval.tok.loc.line = yylineno; return(x)
+#define RETURN_VAL(x)		yylval.tok.str = new std::string( yytext ); RETURN_LOCN(x)
+#define RETURN_CHAR(x)		yylval.tok.str = NULL; RETURN_LOCN(x)
+#define RETURN_STR(x)		yylval.tok.str = strtext; RETURN_LOCN(x)
+
 #define WHITE_RETURN(x)									// do nothing
 #define NEWLINE_RETURN()	WHITE_RETURN('\n')
-#define RETURN_VAL(x)		yylval.tok.str = new std::string( yytext ); \
-		                        yylval.tok.loc.file = yyfilename; \
-		                        yylval.tok.loc.line = yylineno; \
-		                        return(x)
-#define RETURN_STR(x)		yylval.tok.str = strtext; \
-		                        yylval.tok.loc.file = yyfilename; \
-		                        yylval.tok.loc.line = yylineno; \
-		                        return(x)
-
-#define KEYWORD_RETURN(x)	RETURN_VAL(x)				// keyword
+#define ASCIIOP_RETURN()	RETURN_CHAR((int)yytext[0])	// single character operator
+#define NAMEDOP_RETURN(x)	RETURN_VAL(x)				// multichar operator, with a name
+#define NUMERIC_RETURN(x)	rm_underscore(); RETURN_VAL(x) // numeric constant
+#define KEYWORD_RETURN(x)	RETURN_CHAR(x)				// keyword
 #define IDENTIFIER_RETURN()	RETURN_VAL((typedefTable.isIdentifier(yytext) ? IDENTIFIER : typedefTable.isTypedef(yytext) ? TYPEDEFname : TYPEGENname))
-//#define ATTRIBUTE_RETURN()	RETURN_VAL((typedefTable.isIdentifier(yytext) ? ATTR_IDENTIFIER : typedefTable.isTypedef(yytext) ? ATTR_TYPEDEFname : ATTR_TYPEGENname))
 #define ATTRIBUTE_RETURN()	RETURN_VAL(ATTR_IDENTIFIER)
-
-#define ASCIIOP_RETURN()	RETURN_VAL((int)yytext[0])	// single character operator
-#define NAMEDOP_RETURN(x)	RETURN_VAL(x)				// multichar operator, with a name
-
-#define NUMERIC_RETURN(x)	rm_underscore(); RETURN_VAL(x) // numeric constant
 
 void rm_underscore() {
Index: src/Parser/module.mk
===================================================================
--- src/Parser/module.mk	(revision cd623a4e93c2eeb566858071f03b3e141d60d50c)
+++ src/Parser/module.mk	(revision 5f2f2d75adcd9f673ef8bda86f25d409347089be)
@@ -11,6 +11,6 @@
 ## Created On       : Sat May 16 15:29:09 2015
 ## Last Modified By : Peter A. Buhr
-## Last Modified On : Thu Jun  4 09:39:00 2015
-## Update Count     : 86
+## Last Modified On : Mon Jun  8 20:23:47 2015
+## Update Count     : 87
 ###############################################################################
 
Index: src/Parser/parser.cc
===================================================================
--- src/Parser/parser.cc	(revision cd623a4e93c2eeb566858071f03b3e141d60d50c)
+++ src/Parser/parser.cc	(revision 5f2f2d75adcd9f673ef8bda86f25d409347089be)
@@ -9266,16 +9266,13 @@
 // ----end of grammar----
 
-void yyerror( char *string ) {
-	using std::cout;
-	using std::endl;
-	cout << "Error ";
+void yyerror( const char * ) {
+	std::cout << "Error ";
 	if ( yyfilename ) {
-		cout << "in file " << yyfilename << " ";
-	}
-	cout << "at line " << yylineno << " reading token \"" << *(yylval.tok.str) << "\"" << endl;
+	    std::cout << "in file " << yyfilename << " ";
+	} // if
+	std::cout << "at line " << yylineno << " reading token \"" << *(yylval.tok.str) << "\"" << std::endl;
 }
 
 // Local Variables: //
-// fill-column: 110 //
 // tab-width: 4 //
 // mode: c++ //
Index: src/Parser/parser.yy
===================================================================
--- src/Parser/parser.yy	(revision cd623a4e93c2eeb566858071f03b3e141d60d50c)
+++ src/Parser/parser.yy	(revision 5f2f2d75adcd9f673ef8bda86f25d409347089be)
@@ -10,6 +10,6 @@
 // Created On       : Sat Sep  1 20:22:55 2001
 // Last Modified By : Peter A. Buhr
-// Last Modified On : Sat Jun  6 20:18:36 2015
-// Update Count     : 1026
+// Last Modified On : Mon Jun  8 20:31:07 2015
+// Update Count     : 1030
 // 
 
@@ -2717,16 +2717,13 @@
 // ----end of grammar----
 
-void yyerror( char *string ) {
-	using std::cout;
-	using std::endl;
-	cout << "Error ";
+void yyerror( const char * ) {
+	std::cout << "Error ";
 	if ( yyfilename ) {
-		cout << "in file " << yyfilename << " ";
-	}
-	cout << "at line " << yylineno << " reading token \"" << *(yylval.tok.str) << "\"" << endl;
+	    std::cout << "in file " << yyfilename << " ";
+	} // if
+	std::cout << "at line " << yylineno << " reading token \"" << *(yylval.tok.str) << "\"" << std::endl;
 }
 
 // Local Variables: //
-// fill-column: 110 //
 // tab-width: 4 //
 // mode: c++ //
