Changeset b067d9b for src/Parser/lex.ll
- Timestamp:
- Oct 29, 2019, 4:01:24 PM (6 years ago)
- Branches:
- ADT, arm-eh, ast-experimental, enum, forall-pointer-decay, jacob/cs343-translation, jenkins-sandbox, master, new-ast, new-ast-unique-expr, pthread-emulation, qualifiedEnum
- Children:
- 773db65, 9421f3d8
- Parents:
- 7951100 (diff), 8364209 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the(diff)
links above to see all the changes relative to each parent. - File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
src/Parser/lex.ll
r7951100 rb067d9b 10 10 * Created On : Sat Sep 22 08:58:10 2001 11 11 * Last Modified By : Peter A. Buhr 12 * Last Modified On : Thu Jun 7 08:27:40 201813 * Update Count : 67912 * Last Modified On : Sun Aug 4 20:53:47 2019 13 * Update Count : 719 14 14 */ 15 15 … … 25 25 //**************************** Includes and Defines **************************** 26 26 27 // trigger before each matching rule's action 28 #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 : ""; 27 35 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 action29 36 30 37 #include <string> … … 32 39 using namespace std; 33 40 41 #include "config.h" // configure info 34 42 #include "ParseNode.h" 35 43 #include "TypedefTable.h" … … 49 57 #define NUMERIC_RETURN(x) rm_underscore(); RETURN_VAL( x ) // numeric constant 50 58 #define KEYWORD_RETURN(x) RETURN_CHAR( x ) // keyword 51 #define QKEYWORD_RETURN(x) typedefTable.isKind( yytext ); RETURN_VAL(x);// quasi-keyword59 #define QKEYWORD_RETURN(x) RETURN_VAL(x); // quasi-keyword 52 60 #define IDENTIFIER_RETURN() RETURN_VAL( typedefTable.isKind( yytext ) ) 53 #define ATTRIBUTE_RETURN() RETURN_VAL( ATTR_IDENTIFIER ) 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 54 67 55 68 void rm_underscore() { … … 79 92 identifier ([a-zA-Z_$]|{universal_char})([0-9a-zA-Z_$]|{universal_char})* 80 93 81 // attribute identifier, GCC: $ in identifier82 attr_identifier "@"{identifier}83 84 94 // numeric constants, CFA: '_' in constant 85 95 hex_quad {hex}("_"?{hex}){3} 86 96 size_opt (8|16|32|64|128)? 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]))? 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]))? 89 101 90 102 octal_digits ({octal})|({octal}({octal}|"_")*{octal}) … … 105 117 // GCC: D (double) and iI (imaginary) suffixes, and DL (long double) 106 118 exponent "_"?[eE]"_"?[+-]?{decimal_digits} 107 floating_size 32|64|80|128108 floating_length ([fFdDlL ]|[lL]{floating_size})119 floating_size 16|32|32x|64|64x|80|128|128x 120 floating_length ([fFdDlLwWqQ]|[fF]{floating_size}) 109 121 floating_suffix ({floating_length}?[iI]?)|([iI]{floating_length}) 110 122 floating_suffix_opt ("_"?({floating_suffix}|"DL"))? … … 202 214 __attribute__ { KEYWORD_RETURN(ATTRIBUTE); } // GCC 203 215 auto { KEYWORD_RETURN(AUTO); } 216 __auto_type { KEYWORD_RETURN(AUTO_TYPE); } 217 basetypeof { KEYWORD_RETURN(BASETYPEOF); } // CFA 204 218 _Bool { KEYWORD_RETURN(BOOL); } // C99 205 219 break { KEYWORD_RETURN(BREAK); } … … 209 223 char { KEYWORD_RETURN(CHAR); } 210 224 choose { KEYWORD_RETURN(CHOOSE); } // CFA 225 coerce { KEYWORD_RETURN(COERCE); } // CFA 211 226 _Complex { KEYWORD_RETURN(COMPLEX); } // C99 212 227 __complex { KEYWORD_RETURN(COMPLEX); } // GCC … … 232 247 finally { KEYWORD_RETURN(FINALLY); } // CFA 233 248 float { KEYWORD_RETURN(FLOAT); } 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 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 244 260 for { KEYWORD_RETURN(FOR); } 245 261 forall { KEYWORD_RETURN(FORALL); } // CFA 246 262 fortran { KEYWORD_RETURN(FORTRAN); } 247 263 ftype { KEYWORD_RETURN(FTYPE); } // CFA 264 generator { KEYWORD_RETURN(GENERATOR); } // CFA 248 265 _Generic { KEYWORD_RETURN(GENERIC); } // C11 249 266 goto { KEYWORD_RETURN(GOTO); } … … 256 273 __inline__ { KEYWORD_RETURN(INLINE); } // GCC 257 274 int { KEYWORD_RETURN(INT); } 275 int128 { KEYWORD_RETURN(INT128); } // CFA 258 276 __int128 { KEYWORD_RETURN(INT128); } // GCC 259 int128{ KEYWORD_RETURN(INT128); } // GCC277 __int128_t { KEYWORD_RETURN(INT128); } // GCC 260 278 __label__ { KEYWORD_RETURN(LABEL); } // GCC 261 279 long { KEYWORD_RETURN(LONG); } … … 272 290 __restrict__ { KEYWORD_RETURN(RESTRICT); } // GCC 273 291 return { KEYWORD_RETURN(RETURN); } 292 /* resume { KEYWORD_RETURN(RESUME); } // CFA */ 274 293 short { KEYWORD_RETURN(SHORT); } 275 294 signed { KEYWORD_RETURN(SIGNED); } … … 280 299 _Static_assert { KEYWORD_RETURN(STATICASSERT); } // C11 281 300 struct { KEYWORD_RETURN(STRUCT); } 301 /* suspend { KEYWORD_RETURN(SUSPEND); } // CFA */ 282 302 switch { KEYWORD_RETURN(SWITCH); } 283 303 thread { KEYWORD_RETURN(THREAD); } // C11 … … 294 314 __typeof__ { KEYWORD_RETURN(TYPEOF); } // GCC 295 315 union { KEYWORD_RETURN(UNION); } 316 __uint128_t { KEYWORD_RETURN(UINT128); } // GCC 296 317 unsigned { KEYWORD_RETURN(UNSIGNED); } 297 318 __builtin_va_list { KEYWORD_RETURN(VALIST); } // GCC … … 313 334 IDENTIFIER_RETURN(); 314 335 } 315 {attr_identifier} { ATTRIBUTE_RETURN(); }316 336 317 337 /* numeric constants */ … … 404 424 405 425 "@=" { NAMEDOP_RETURN(ATassign); } // CFA 426 "~=" { NAMEDOP_RETURN(ErangeUpEq); } // CFA 427 "-~" { NAMEDOP_RETURN(ErangeDown); } // CFA 428 "-~=" { NAMEDOP_RETURN(ErangeDownEq); } // CFA 406 429 407 430 /* CFA, operator identifier */ … … 457 480 void yyerror( const char * errmsg ) { 458 481 SemanticErrorThrow = true; 459 c out<< (yyfilename ? yyfilename : "*unknown file*") << ':' << yylineno << ':' << column - yyleng + 1482 cerr << (yyfilename ? yyfilename : "*unknown file*") << ':' << yylineno << ':' << column - yyleng + 1 460 483 << ": " << ErrorHelpers::error_str() << errmsg << " at token \"" << (yytext[0] == '\0' ? "EOF" : yytext) << '"' << endl; 461 484 }
Note:
See TracChangeset
for help on using the changeset viewer.