Changes in src/Parser/lex.ll [f1da02c:8551b859]
- File:
-
- 1 edited
-
src/Parser/lex.ll (modified) (16 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/Parser/lex.ll
rf1da02c r8551b859 10 10 * Created On : Sat Sep 22 08:58:10 2001 11 11 * Last Modified By : Peter A. Buhr 12 * Last Modified On : Sun Aug 4 20:53:47 201913 * Update Count : 71912 * Last Modified On : Thu Jun 7 08:27:40 2018 13 * Update Count : 679 14 14 */ 15 15 … … 25 25 //**************************** Includes and Defines **************************** 26 26 27 // trigger before each matching rule's action28 #define YY_USER_ACTION \29 yylloc.first_line = yylineno; \30 yylloc.first_column = column; \31 column += yyleng; \32 yylloc.last_column = column; \33 yylloc.last_line = yylineno; \34 yylloc.filename = yyfilename ? yyfilename : "";35 27 unsigned int column = 0; // position of the end of the last token parsed 28 #define YY_USER_ACTION yylloc.first_line = yylineno; yylloc.first_column = column; column += yyleng; yylloc.last_column = column; yylloc.last_line = yylineno; yylloc.filename = yyfilename ? yyfilename : ""; // trigger before each matching rule's action 36 29 37 30 #include <string> … … 39 32 using namespace std; 40 33 41 #include "config.h" // configure info42 34 #include "ParseNode.h" 43 35 #include "TypedefTable.h" … … 57 49 #define NUMERIC_RETURN(x) rm_underscore(); RETURN_VAL( x ) // numeric constant 58 50 #define KEYWORD_RETURN(x) RETURN_CHAR( x ) // keyword 59 #define QKEYWORD_RETURN(x) RETURN_VAL(x);// quasi-keyword51 #define QKEYWORD_RETURN(x) typedefTable.isKind( yytext ); RETURN_VAL(x); // quasi-keyword 60 52 #define IDENTIFIER_RETURN() RETURN_VAL( typedefTable.isKind( yytext ) ) 61 62 #ifdef HAVE_KEYWORDS_FLOATXX // GCC >= 7 => keyword, otherwise typedef 63 #define FLOATXX(v) KEYWORD_RETURN(v); 64 #else 65 #define FLOATXX(v) IDENTIFIER_RETURN(); 66 #endif // HAVE_KEYWORDS_FLOATXX 53 #define ATTRIBUTE_RETURN() RETURN_VAL( ATTR_IDENTIFIER ) 67 54 68 55 void rm_underscore() { … … 92 79 identifier ([a-zA-Z_$]|{universal_char})([0-9a-zA-Z_$]|{universal_char})* 93 80 81 // attribute identifier, GCC: $ in identifier 82 attr_identifier "@"{identifier} 83 94 84 // numeric constants, CFA: '_' in constant 95 85 hex_quad {hex}("_"?{hex}){3} 96 86 size_opt (8|16|32|64|128)? 97 // CFA: explicit l8/l16/l32/l64/l128, char 'hh', short 'h', int 'n' 98 length ("ll"|"LL"|[lL]{size_opt})|("hh"|"HH"|[hHnN]) 99 // CFA: size_t 'z', pointer 'p', which define a sign and length 100 integer_suffix_opt ("_"?(([uU]({length}?[iI]?)|([iI]{length}))|([iI]({length}?[uU]?)|([uU]{length}))|({length}([iI]?[uU]?)|([uU][iI]))|[zZ]|[pP]))? 87 length ("ll"|"LL"|[lL]{size_opt})|("hh"|"HH"|[hH]) 88 integer_suffix_opt ("_"?(([uU]({length}?[iI]?)|([iI]{length}))|([iI]({length}?[uU]?)|([uU]{length}))|({length}([iI]?[uU]?)|([uU][iI]))|[zZ]))? 101 89 102 90 octal_digits ({octal})|({octal}({octal}|"_")*{octal}) … … 117 105 // GCC: D (double) and iI (imaginary) suffixes, and DL (long double) 118 106 exponent "_"?[eE]"_"?[+-]?{decimal_digits} 119 floating_size 16|32|32x|64|64x|80|128|128x120 floating_length ([fFdDlL wWqQ]|[fF]{floating_size})107 floating_size 32|64|80|128 108 floating_length ([fFdDlL]|[lL]{floating_size}) 121 109 floating_suffix ({floating_length}?[iI]?)|([iI]{floating_length}) 122 110 floating_suffix_opt ("_"?({floating_suffix}|"DL"))? … … 214 202 __attribute__ { KEYWORD_RETURN(ATTRIBUTE); } // GCC 215 203 auto { KEYWORD_RETURN(AUTO); } 216 __auto_type { KEYWORD_RETURN(AUTO_TYPE); }217 basetypeof { KEYWORD_RETURN(BASETYPEOF); } // CFA218 204 _Bool { KEYWORD_RETURN(BOOL); } // C99 219 205 break { KEYWORD_RETURN(BREAK); } … … 223 209 char { KEYWORD_RETURN(CHAR); } 224 210 choose { KEYWORD_RETURN(CHOOSE); } // CFA 225 coerce { KEYWORD_RETURN(COERCE); } // CFA226 211 _Complex { KEYWORD_RETURN(COMPLEX); } // C99 227 212 __complex { KEYWORD_RETURN(COMPLEX); } // GCC … … 247 232 finally { KEYWORD_RETURN(FINALLY); } // CFA 248 233 float { KEYWORD_RETURN(FLOAT); } 249 __float80 { KEYWORD_RETURN(uuFLOAT80); } // GCC 250 float80 { KEYWORD_RETURN(uuFLOAT80); } // GCC 251 __float128 { KEYWORD_RETURN(uuFLOAT128); } // GCC 252 float128 { KEYWORD_RETURN(uuFLOAT128); } // GCC 253 _Float16 { FLOATXX(uFLOAT16); } // GCC 254 _Float32 { FLOATXX(uFLOAT32); } // GCC 255 _Float32x { FLOATXX(uFLOAT32X); } // GCC 256 _Float64 { FLOATXX(uFLOAT64); } // GCC 257 _Float64x { FLOATXX(uFLOAT64X); } // GCC 258 _Float128 { FLOATXX(uFLOAT128); } // GCC 259 _Float128x { FLOATXX(uFLOAT128); } // GCC 234 _Float32 { KEYWORD_RETURN(FLOAT); } // GCC 235 _Float32x { KEYWORD_RETURN(FLOAT); } // GCC 236 _Float64 { KEYWORD_RETURN(DOUBLE); } // GCC 237 _Float64x { KEYWORD_RETURN(DOUBLE); } // GCC 238 __float80 { KEYWORD_RETURN(FLOAT80); } // GCC 239 float80 { KEYWORD_RETURN(FLOAT80); } // GCC 240 _Float128 { KEYWORD_RETURN(FLOAT128); } // GCC 241 _Float128x { KEYWORD_RETURN(FLOAT128); } // GCC 242 __float128 { KEYWORD_RETURN(FLOAT128); } // GCC 243 float128 { KEYWORD_RETURN(FLOAT128); } // GCC 260 244 for { KEYWORD_RETURN(FOR); } 261 245 forall { KEYWORD_RETURN(FORALL); } // CFA 262 246 fortran { KEYWORD_RETURN(FORTRAN); } 263 247 ftype { KEYWORD_RETURN(FTYPE); } // CFA 264 generator { KEYWORD_RETURN(GENERATOR); } // CFA265 248 _Generic { KEYWORD_RETURN(GENERIC); } // C11 266 249 goto { KEYWORD_RETURN(GOTO); } … … 273 256 __inline__ { KEYWORD_RETURN(INLINE); } // GCC 274 257 int { KEYWORD_RETURN(INT); } 275 int128 { KEYWORD_RETURN(INT128); } // CFA276 258 __int128 { KEYWORD_RETURN(INT128); } // GCC 277 __int128_t{ KEYWORD_RETURN(INT128); } // GCC259 int128 { KEYWORD_RETURN(INT128); } // GCC 278 260 __label__ { KEYWORD_RETURN(LABEL); } // GCC 279 261 long { KEYWORD_RETURN(LONG); } … … 290 272 __restrict__ { KEYWORD_RETURN(RESTRICT); } // GCC 291 273 return { KEYWORD_RETURN(RETURN); } 292 /* resume { KEYWORD_RETURN(RESUME); } // CFA */293 274 short { KEYWORD_RETURN(SHORT); } 294 275 signed { KEYWORD_RETURN(SIGNED); } … … 299 280 _Static_assert { KEYWORD_RETURN(STATICASSERT); } // C11 300 281 struct { KEYWORD_RETURN(STRUCT); } 301 /* suspend { KEYWORD_RETURN(SUSPEND); } // CFA */302 282 switch { KEYWORD_RETURN(SWITCH); } 303 283 thread { KEYWORD_RETURN(THREAD); } // C11 … … 314 294 __typeof__ { KEYWORD_RETURN(TYPEOF); } // GCC 315 295 union { KEYWORD_RETURN(UNION); } 316 __uint128_t { KEYWORD_RETURN(UINT128); } // GCC317 296 unsigned { KEYWORD_RETURN(UNSIGNED); } 318 297 __builtin_va_list { KEYWORD_RETURN(VALIST); } // GCC … … 334 313 IDENTIFIER_RETURN(); 335 314 } 315 {attr_identifier} { ATTRIBUTE_RETURN(); } 336 316 337 317 /* numeric constants */ … … 424 404 425 405 "@=" { NAMEDOP_RETURN(ATassign); } // CFA 426 "~=" { NAMEDOP_RETURN(ErangeUpEq); } // CFA427 "-~" { NAMEDOP_RETURN(ErangeDown); } // CFA428 "-~=" { NAMEDOP_RETURN(ErangeDownEq); } // CFA429 406 430 407 /* CFA, operator identifier */ … … 480 457 void yyerror( const char * errmsg ) { 481 458 SemanticErrorThrow = true; 482 c err<< (yyfilename ? yyfilename : "*unknown file*") << ':' << yylineno << ':' << column - yyleng + 1459 cout << (yyfilename ? yyfilename : "*unknown file*") << ':' << yylineno << ':' << column - yyleng + 1 483 460 << ": " << ErrorHelpers::error_str() << errmsg << " at token \"" << (yytext[0] == '\0' ? "EOF" : yytext) << '"' << endl; 484 461 }
Note:
See TracChangeset
for help on using the changeset viewer.