diff --git a/gcc/cobol/parse.y b/gcc/cobol/parse.y index 070aad4f5b7c5019b3c44cf1658c1b21bf9817ab..3a90d685eed8b3e9b5e8f2e8e5b425fcbd1f43da 100644 --- a/gcc/cobol/parse.y +++ b/gcc/cobol/parse.y @@ -9826,8 +9826,8 @@ keyword_of( const char name[] ) { const char * keyword_str( int token ) { - if( token == YYEOF ) return "YYEOF"; - if( token == YYEOF ) return "YYEMPTY"; + if( token == YYEOF ) return "YYEOF"; + if( token == YYEMPTY ) return "YYEMPTY"; if( token < 255 ) { static char ascii[2]; @@ -9859,7 +9859,7 @@ keyword_str( int token ) { * All function names are rejected here; the lexer uses typed_name to check * REPOSITORY names. */ - static struct kw_t { const char *lexeme, *name; } kws[] = { +static struct kw_t { const char *lexeme, *name; } kws[] = { { "CODE_SET", "CODESET" }, { "DATA", "DATA_DIV" }, { "ENVIRONMENT", "ENVIRONMENT_DIV" }, @@ -9876,7 +9876,7 @@ keyword_str( int token ) { { "STRING", "STRING_kw" }, { "THROUGH", "THRU" }, { "TRUE", "TRUE_kw" }, - }, *eokws = kws + COUNT_OF(kws); +}, *eokws = kws + COUNT_OF(kws); class tokenset_t { std::map <std::string, int> tokens; @@ -9952,7 +9952,7 @@ class tokenset_t { }; int - keyword_tok( const char * text, bool include_intrinsics ) { +keyword_tok( const char * text, bool include_intrinsics ) { static auto last = std::find_if(yytname + 3, yytname + COUNT_OF(yytname), [] ( const char *name ) { return 0 == strcmp(name, "$accept"); }); diff --git a/gcc/cobol/scan_post.h b/gcc/cobol/scan_post.h index 71a95304847e29dbf6d0305de90f7e0c5dc9529c..c9ed774f1eb818d335d069381dafd67deab52fa4 100644 --- a/gcc/cobol/scan_post.h +++ b/gcc/cobol/scan_post.h @@ -268,31 +268,29 @@ prelex() { * The final, rejected CDF token might be a LEVEL number. */ if( YY_START == field_state && level_needed() ) { - if( token == final_token ) { - switch( token ) { - case NUMSTR: - if( yy_flex_debug ) warnx("final token is NUMSTR"); - yylval.number = level_of(yylval.numstr.string); - token = LEVEL; + switch( token ) { + case NUMSTR: + if( yy_flex_debug ) warnx("final token is NUMSTR"); + yylval.number = level_of(yylval.numstr.string); + token = LEVEL; + break; + case YDF_NUMBER: + if( yy_flex_debug ) warnx("final token is YDF_NUMBER"); + yylval.number = ydflval.number; + token = LEVEL; + break; + } + if( token == LEVEL ) { + switch(yylval.number) { + case 66: + token = LEVEL66; break; - case YDF_NUMBER: - if( yy_flex_debug ) warnx("final token is YDF_NUMBER"); - yylval.number = ydflval.number; - token = LEVEL; + case 78: + token = LEVEL78; + break; + case 88: + token = LEVEL78; break; - } - if( token == LEVEL ) { - switch(yylval.number) { - case 66: - token = LEVEL66; - break; - case 78: - token = LEVEL78; - break; - case 88: - token = LEVEL78; - break; - } } } }