Changeset 5546eee4 for src/Parser
- Timestamp:
- Dec 16, 2023, 1:01:44 AM (2 years ago)
- Branches:
- master
- Children:
- b7898ac
- Parents:
- 0fa0201d (diff), 69ab896 (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. - Location:
- src/Parser
- Files:
-
- 5 edited
-
DeclarationNode.cc (modified) (3 diffs)
-
ExpressionNode.cc (modified) (8 diffs)
-
ParseNode.h (modified) (3 diffs)
-
TypeData.cc (modified) (4 diffs)
-
parser.yy (modified) (7 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/Parser/DeclarationNode.cc
r0fa0201d r5546eee4 10 10 // Created On : Sat May 16 12:34:05 2015 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Sat Jun 17 14:41:48202313 // Update Count : 140 512 // Last Modified On : Thu Dec 14 19:05:17 2023 13 // Update Count : 1407 14 14 // 15 15 … … 632 632 dst->basictype = src->basictype; 633 633 } else if ( src->basictype != DeclarationNode::NoBasicType ) 634 SemanticError( yylloc, string( "multiple declaration types \"" ) + DeclarationNode::basicTypeNames[ dst->basictype ] +635 "\" and \"" + DeclarationNode::basicTypeNames[ src->basictype ] + "\"." );636 634 SemanticError( yylloc, "multiple declaration types \"%s\" and \"%s\".", 635 DeclarationNode::basicTypeNames[ dst->basictype ], 636 DeclarationNode::basicTypeNames[ src->basictype ] ); 637 637 if ( dst->complextype == DeclarationNode::NoComplexType ) { 638 638 dst->complextype = src->complextype; 639 639 } else if ( src->complextype != DeclarationNode::NoComplexType ) 640 SemanticError( yylloc, string( "multiple declaration types \"" ) + DeclarationNode::complexTypeNames[ src->complextype ] +641 "\" and \"" + DeclarationNode::complexTypeNames[ src->complextype ] + "\"." );642 640 SemanticError( yylloc, "multiple declaration types \"%s\" and \"%s\".", 641 DeclarationNode::complexTypeNames[ src->complextype ], 642 DeclarationNode::complexTypeNames[ src->complextype ] ); 643 643 if ( dst->signedness == DeclarationNode::NoSignedness ) { 644 644 dst->signedness = src->signedness; 645 645 } else if ( src->signedness != DeclarationNode::NoSignedness ) 646 SemanticError( yylloc, string( "conflicting type specifier \"" ) + DeclarationNode::signednessNames[ dst->signedness ] +647 "\" and \"" + DeclarationNode::signednessNames[ src->signedness ] + "\"." );648 646 SemanticError( yylloc, "conflicting type specifier \"%s\" and \"%s\".", 647 DeclarationNode::signednessNames[ dst->signedness ], 648 DeclarationNode::signednessNames[ src->signedness ] ); 649 649 if ( dst->length == DeclarationNode::NoLength ) { 650 650 dst->length = src->length; … … 652 652 dst->length = DeclarationNode::LongLong; 653 653 } else if ( src->length != DeclarationNode::NoLength ) 654 SemanticError( yylloc, string( "conflicting type specifier \"" ) + DeclarationNode::lengthNames[ dst->length ] + 655 "\" and \"" + DeclarationNode::lengthNames[ src->length ] + "\"." ); 654 SemanticError( yylloc, "conflicting type specifier \"%s\" and \"%s\".", 655 DeclarationNode::lengthNames[ dst->length ], 656 DeclarationNode::lengthNames[ src->length ] ); 656 657 } // if 657 658 break; -
src/Parser/ExpressionNode.cc
r0fa0201d r5546eee4 9 9 // Author : Peter A. Buhr 10 10 // Created On : Sat May 16 13:17:07 2015 11 // Last Modified By : Andrew Beach12 // Last Modified On : T ue Apr 4 11:07:00202313 // Update Count : 108 311 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Thu Dec 14 18:57:07 2023 13 // Update Count : 1087 14 14 // 15 15 … … 193 193 194 194 #if ! defined(__SIZEOF_INT128__) 195 if ( type == 5 ) SemanticError( yylloc, "int128 constant is not supported on this target " + str);195 if ( type == 5 ) SemanticError( yylloc, "int128 constant is not supported on this target \"%s\"", str.c_str() ); 196 196 #endif // ! __SIZEOF_INT128__ 197 197 … … 204 204 } else { // hex int128 constant 205 205 unsigned int len = str.length(); 206 if ( len > (2 + 16 + 16) ) SemanticError( yylloc, "128-bit hexadecimal constant to large " + str);206 if ( len > (2 + 16 + 16) ) SemanticError( yylloc, "128-bit hexadecimal constant to large \"%s\"", str.c_str() ); 207 207 // hex digits < 2^64 208 208 if ( len > (2 + 16) ) { … … 219 219 unsigned int len = str.length(); 220 220 if ( type == 5 && len > 2 + 64 ) { 221 if ( len > 2 + 64 + 64 ) SemanticError( yylloc, "128-bit binary constant to large " + str);221 if ( len > 2 + 64 + 64 ) SemanticError( yylloc, "128-bit binary constant to large \"%s\".", str.c_str() ); 222 222 str2 = "0b" + str.substr( len - 64 ); 223 223 str = str.substr( 0, len - 64 ); … … 233 233 } else { // octal int128 constant 234 234 unsigned int len = str.length(); 235 if ( len > 1 + 43 || (len == 1 + 43 && str[0] > '3') ) SemanticError( yylloc, "128-bit octal constant to large " + str);235 if ( len > 1 + 43 || (len == 1 + 43 && str[0] > '3') ) SemanticError( yylloc, "128-bit octal constant to large \"%s\"", str.c_str() ); 236 236 char buf[32]; 237 237 if ( len <= 1 + 21 ) { // value < 21 octal digitis … … 266 266 unsigned int len = str.length(); 267 267 if ( str.length() == 39 && str > (Unsigned ? "340282366920938463463374607431768211455" : "170141183460469231731687303715884105727") ) 268 SemanticError( yylloc, "128-bit decimal constant to large " + str);268 SemanticError( yylloc, "128-bit decimal constant to large \"%s\".", str.c_str() ); 269 269 char buf[32]; 270 270 if ( len <= 19 ) { // value < 19 decimal digitis … … 502 502 ast::Expr * build_field_name_FLOATING_FRACTIONconstant( 503 503 const CodeLocation & location, const string & str ) { 504 if ( str.find_first_not_of( "0123456789", 1 ) != string::npos ) SemanticError( yylloc, "invalid tuple index " + str);504 if ( str.find_first_not_of( "0123456789", 1 ) != string::npos ) SemanticError( yylloc, "invalid tuple index \"%s\".", str.c_str() ); 505 505 ast::Expr * ret = build_constantInteger( location, 506 506 *new string( str.substr(1) ) ); … … 511 511 ast::Expr * build_field_name_FLOATING_DECIMALconstant( 512 512 const CodeLocation & location, const string & str ) { 513 if ( str[str.size() - 1] != '.' ) SemanticError( yylloc, "invalid tuple index " + str);513 if ( str[str.size() - 1] != '.' ) SemanticError( yylloc, "invalid tuple index \"%s\".", str.c_str() ); 514 514 ast::Expr * ret = build_constantInteger( 515 515 location, *new string( str.substr( 0, str.size()-1 ) ) ); -
src/Parser/ParseNode.h
r0fa0201d r5546eee4 9 9 // Author : Rodolfo G. Esteves 10 10 // Created On : Sat May 16 13:28:16 2015 11 // Last Modified By : Andrew Beach12 // Last Modified On : Mon Apr 3 17:55:00202313 // Update Count : 94 211 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Sat Dec 9 17:39:34 2023 13 // Update Count : 945 14 14 // 15 15 … … 37 37 class ExpressionNode; 38 38 struct StatementNode; 39 39 40 40 41 //############################################################################## … … 97 98 std::ostream & operator<<( std::ostream & out, const ParseNode * node ); 98 99 100 __attribute__((noreturn)) static inline void SemanticError( const ParseNode * obj, const std::string & error ) { 101 SemanticError( obj->location, toString( error, obj ) ); 102 } 103 99 104 // Local Variables: // 100 105 // tab-width: 4 // -
src/Parser/TypeData.cc
r0fa0201d r5546eee4 9 9 // Author : Rodolfo G. Esteves 10 10 // Created On : Sat May 16 15:12:51 2015 11 // Last Modified By : Andrew Beach12 // Last Modified On : T ue Apr 4 13:39:00202313 // Update Count : 68 011 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Thu Dec 14 18:59:12 2023 13 // Update Count : 684 14 14 // 15 15 … … 864 864 865 865 static string genTSError( string msg, DeclarationNode::BasicType basictype ) { 866 SemanticError( yylloc, string( "invalid type specifier \"" ) + msg + "\" for type \"" + DeclarationNode::basicTypeNames[basictype] + "\".");866 SemanticError( yylloc, "invalid type specifier \"%s\" for type \"%s\".", msg.c_str(), DeclarationNode::basicTypeNames[basictype] ); 867 867 } // genTSError 868 868 … … 1496 1496 // type set => parameter name already transformed by a declaration names so there is a duplicate 1497 1497 // declaration name attempting a second transformation 1498 if ( param->type ) SemanticError( param->location, string( "duplicate declaration name " ) + *param->name);1498 if ( param->type ) SemanticError( param->location, "duplicate declaration name \"%s\".", param->name->c_str() ); 1499 1499 // declaration type reset => declaration already transformed by a parameter name so there is a duplicate 1500 1500 // parameter name attempting a second transformation 1501 if ( ! decl->type ) SemanticError( param->location, string( "duplicate parameter name " ) + *param->name);1501 if ( ! decl->type ) SemanticError( param->location, "duplicate parameter name \"%s\".", param->name->c_str() ); 1502 1502 param->type = decl->type; // set copy declaration type to parameter type 1503 1503 decl->type = nullptr; // reset declaration type … … 1507 1507 } // for 1508 1508 // declaration type still set => type not moved to a matching parameter so there is a missing parameter name 1509 if ( decl->type ) SemanticError( decl->location, string( "missing name in parameter list " ) + *decl->name);1509 if ( decl->type ) SemanticError( decl->location, "missing name in parameter list %s", decl->name->c_str() ); 1510 1510 } // for 1511 1511 -
src/Parser/parser.yy
r0fa0201d r5546eee4 10 10 // Created On : Sat Sep 1 20:22:55 2001 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Tue Oct 3 17:14:12202313 // Update Count : 639 612 // Last Modified On : Sun Nov 26 13:18:06 2023 13 // Update Count : 6398 14 14 // 15 15 … … 260 260 } // if 261 261 } else { 262 SemanticError( yylloc, "syntax error, loop-index name missing. Expression disallowed. ." ); return nullptr;262 SemanticError( yylloc, "syntax error, loop-index name missing. Expression disallowed." ); return nullptr; 263 263 } // if 264 264 } // forCtrl 265 265 266 266 static void IdentifierBeforeIdentifier( string & identifier1, string & identifier2, const char * kind ) { 267 SemanticError( yylloc, ::toString( "syntax error, adjacent identifiers \"", identifier1, "\" and \"", identifier2, "\" are not meaningful in a", kind, ".\n" 268 "Possible cause is misspelled type name or missing generic parameter." ) ); 267 SemanticError( yylloc, "syntax error, adjacent identifiers \"%s\" and \"%s\" are not meaningful in an %s.\n" 268 "Possible cause is misspelled type name or missing generic parameter.", 269 identifier1.c_str(), identifier2.c_str(), kind ); 269 270 } // IdentifierBeforeIdentifier 270 271 271 272 static void IdentifierBeforeType( string & identifier, const char * kind ) { 272 SemanticError( yylloc, ::toString( "syntax error, identifier \"", identifier, "\" cannot appear before a ", kind, ".\n" 273 "Possible cause is misspelled storage/CV qualifier, misspelled typename, or missing generic parameter." ) ); 273 SemanticError( yylloc, "syntax error, identifier \"%s\" cannot appear before a %s.\n" 274 "Possible cause is misspelled storage/CV qualifier, misspelled typename, or missing generic parameter.", 275 identifier.c_str(), kind ); 274 276 } // IdentifierBeforeType 275 277 … … 689 691 // { SemanticError( yylloc, "Resume expression is currently unimplemented." ); $$ = nullptr; } 690 692 | IDENTIFIER IDENTIFIER // invalid syntax rule 691 { IdentifierBeforeIdentifier( *$1.str, *$2.str, " nexpression" ); $$ = nullptr; }693 { IdentifierBeforeIdentifier( *$1.str, *$2.str, "expression" ); $$ = nullptr; } 692 694 | IDENTIFIER type_qualifier // invalid syntax rule 693 695 { IdentifierBeforeType( *$1.str, "type qualifier" ); $$ = nullptr; } … … 1155 1157 | identifier_or_type_name ':' attribute_list_opt error // invalid syntax rule 1156 1158 { 1157 SemanticError( yylloc, ::toString( "syntx error, label \"", *$1.str, "\" must be associated with a statement, "1158 "where a declaration, case, or default is not a statement."1159 "Move the label or terminate with a semi-colon.") );1159 SemanticError( yylloc, "syntx error, label \"%s\" must be associated with a statement, " 1160 "where a declaration, case, or default is not a statement.\n" 1161 "Move the label or terminate with a semicolon.", $1.str->c_str() ); 1160 1162 $$ = nullptr; 1161 1163 } … … 2101 2103 | sue_declaration_specifier invalid_types // invalid syntax rule 2102 2104 { 2103 SemanticError( yylloc, ::toString( "syntax error, expecting ';' at end of ", 2104 $1->type->enumeration.name ? "enum" : ast::AggregateDecl::aggrString( $1->type->aggregate.kind ), 2105 " declaration." ) ); 2105 SemanticError( yylloc, "syntax error, expecting ';' at end of \"%s\" declaration.", 2106 $1->type->enumeration.name ? "enum" : ast::AggregateDecl::aggrString( $1->type->aggregate.kind ) ); 2106 2107 $$ = nullptr; 2107 2108 } … … 2161 2162 type_qualifier: 2162 2163 type_qualifier_name 2163 | attribute // trick handles most at rribute locations2164 | attribute // trick handles most attribute locations 2164 2165 ; 2165 2166 … … 2585 2586 | type_specifier field_declaring_list_opt '}' // invalid syntax rule 2586 2587 { 2587 SemanticError( yylloc, ::toString( "syntax error, expecting ';' at end of previous declaration." ));2588 SemanticError( yylloc, "syntax error, expecting ';' at end of previous declaration." ); 2588 2589 $$ = nullptr; 2589 2590 }
Note:
See TracChangeset
for help on using the changeset viewer.