Changeset ed9a1ae for src/Parser
- Timestamp:
- Aug 31, 2022, 10:57:37 AM (3 years ago)
- Branches:
- ADT, ast-experimental, master, pthread-emulation
- Children:
- 64af7ac
- Parents:
- dc708c1
- Location:
- src/Parser
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
TabularUnified src/Parser/DeclarationNode.cc ¶
rdc708c1 red9a1ae 262 262 newnode->type->enumeration.anon = name == nullptr; 263 263 if ( base && base->type) { 264 newnode->type->base = base->type; 264 newnode->type->base = base->type; 265 265 } // if 266 266 … … 505 505 } // for 506 506 // src is the new item being added and has a single bit 507 } else if ( ! src->storageClasses.is_threadlocal ) { // conflict ?507 } else if ( ! src->storageClasses.is_threadlocal_any() ) { // conflict ? 508 508 appendError( error, string( "conflicting " ) + Type::StorageClassesNames[storageClasses.ffs()] + 509 509 " & " + Type::StorageClassesNames[src->storageClasses.ffs()] ); -
TabularUnified src/Parser/lex.ll ¶
rdc708c1 red9a1ae 314 314 switch { KEYWORD_RETURN(SWITCH); } 315 315 thread { KEYWORD_RETURN(THREAD); } // C11 316 __thread { KEYWORD_RETURN(THREADLOCAL ); } // GCC317 _Thread_local { KEYWORD_RETURN(THREADLOCAL ); } // C11316 __thread { KEYWORD_RETURN(THREADLOCALGCC); } // GCC 317 _Thread_local { KEYWORD_RETURN(THREADLOCALC11); } // C11 318 318 throw { KEYWORD_RETURN(THROW); } // CFA 319 319 throwResume { KEYWORD_RETURN(THROWRESUME); } // CFA -
TabularUnified src/Parser/parser.yy ¶
rdc708c1 red9a1ae 293 293 %token TYPEDEF 294 294 %token EXTERN STATIC AUTO REGISTER 295 %token THREADLOCAL //C11295 %token THREADLOCALGCC THREADLOCALC11 // GCC, C11 296 296 %token INLINE FORTRAN // C99, extension ISO/IEC 9899:1999 Section J.5.9(1) 297 297 %token NORETURN // C11 … … 1345 1345 { 1346 1346 if ( $2 == OperKinds::LThan || $2 == OperKinds::LEThan ) { SemanticError( yylloc, MISSING_ANON_FIELD ); $$ = nullptr; } 1347 else { SemanticError( yylloc, MISSING_HIGH ); $$ = nullptr; } 1347 else { SemanticError( yylloc, MISSING_HIGH ); $$ = nullptr; } 1348 1348 } 1349 1349 | comma_expression updowneq comma_expression '~' comma_expression // CFA, anonymous loop-index … … 1357 1357 { 1358 1358 if ( $2 == OperKinds::LThan || $2 == OperKinds::LEThan ) { SemanticError( yylloc, MISSING_ANON_FIELD ); $$ = nullptr; } 1359 else { SemanticError( yylloc, MISSING_HIGH ); $$ = nullptr; } 1359 else { SemanticError( yylloc, MISSING_HIGH ); $$ = nullptr; } 1360 1360 } 1361 1361 | comma_expression updowneq comma_expression '~' '@' // CFA, error … … 2082 2082 | REGISTER 2083 2083 { $$ = DeclarationNode::newStorageClass( Type::Register ); } 2084 | THREADLOCAL // C11 2085 { $$ = DeclarationNode::newStorageClass( Type::Threadlocal ); } 2084 | THREADLOCALGCC // GCC 2085 { $$ = DeclarationNode::newStorageClass( Type::ThreadlocalGcc ); } 2086 | THREADLOCALC11 // C11 2087 { $$ = DeclarationNode::newStorageClass( Type::ThreadlocalC11 ); } 2086 2088 // Put function specifiers here to simplify parsing rules, but separate them semantically. 2087 2089 | INLINE // C99
Note: See TracChangeset
for help on using the changeset viewer.