Changeset 79a6b17


Ignore:
Timestamp:
Jan 30, 2023, 7:16:12 PM (22 months ago)
Author:
Peter A. Buhr <pabuhr@…>
Branches:
ADT, ast-experimental, master
Children:
a5f9444
Parents:
ad861ef
Message:

print better error message when semi-colon missing after aggregate

Location:
src/Parser
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • src/Parser/lex.ll

    rad861ef r79a6b17  
    1010 * Created On       : Sat Sep 22 08:58:10 2001
    1111 * Last Modified By : Peter A. Buhr
    12  * Last Modified On : Fri Jan 20 12:08:37 2023
    13  * Update Count     : 766
     12 * Last Modified On : Mon Jan 30 19:03:34 2023
     13 * Update Count     : 767
    1414 */
    1515
     
    503503        SemanticErrorThrow = true;
    504504        cerr << (yyfilename ? yyfilename : "*unknown file*") << ':' << yylineno << ':' << column - yyleng + 1
    505                  << ": " << ErrorHelpers::error_str() << errmsg << " at token \"" << (yytext[0] == '\0' ? "EOF" : yytext) << '"' << endl;
     505                 << ": " << ErrorHelpers::error_str() << errmsg << " before token \"" << (yytext[0] == '\0' ? "EOF" : yytext) << '"' << endl;
    506506}
    507507
  • src/Parser/parser.yy

    rad861ef r79a6b17  
    1010// Created On       : Sat Sep  1 20:22:55 2001
    1111// Last Modified By : Peter A. Buhr
    12 // Last Modified On : Fri Jan 20 12:11:56 2023
    13 // Update Count     : 5855
     12// Last Modified On : Mon Jan 30 18:59:23 2023
     13// Update Count     : 5856
    1414//
    1515
     
    19961996declaration_specifier:                                                                  // type specifier + storage class
    19971997        basic_declaration_specifier
     1998        | type_declaration_specifier
    19981999        | sue_declaration_specifier
    1999         | type_declaration_specifier
     2000        | sue_declaration_specifier invalid_types
     2001                {
     2002                        SemanticError( yylloc,
     2003                                                  ::toString( "Missing ';' after end of ",
     2004                                                                          $1->type->enumeration.name ? "enum" : AggregateDecl::aggrString( $1->type->aggregate.kind ),
     2005                                                                          " declaration" ) );
     2006                        $$ = nullptr;
     2007                }
     2008        ;
     2009
     2010invalid_types:
     2011        aggregate_key
     2012        | basic_type_name
     2013        | indirect_type
    20002014        ;
    20012015
Note: See TracChangeset for help on using the changeset viewer.