From f128c347d5278a521f8101a4a237493a25e6f143 Mon Sep 17 00:00:00 2001 From: "James K. Lowden" Date: Wed, 22 Jul 2026 18:16:43 -0400 Subject: [PATCH] cobol: Restrict CDF reserved words to CDF parsing. Among others PARAMETER was captured as a reserved word during normal parsing, which it is not. Move that and some other obvious CDF tokens to the cdf_state start condition. gcc/cobol/ChangeLog: * scan.l: Make PARAMETER and friends unspecial outside CDF. --- gcc/cobol/scan.l | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/gcc/cobol/scan.l b/gcc/cobol/scan.l index fedb85e502c..0b3bcc38c2f 100644 --- a/gcc/cobol/scan.l +++ b/gcc/cobol/scan.l @@ -1742,6 +1742,13 @@ USE({SPC}FOR)? { return USE; } } { + CALL-CONVENTION { return CALL_CONVENTION; } + COBOL-WORDS { return COBOL_WORDS; } + DEFINE { return CDF_DEFINE; } + OVERRIDE { return OVERRIDE; } + PARAMETER { return PARAMETER_kw; } + SOURCE{BLANK}FORMAT { return SOURCE_FORMAT; } + [+-]?{INTEGERZ} { int value; if( is_integer_token(&value) ) { ydflval.number = value; @@ -2392,10 +2399,10 @@ BASIS { yy_push_state(basis); return BASIS; } . { yy_pop_state(); return RAISING; } // invalid syntax } /* - * Catch-all + * Catch-all These tokens may occur anywhere, and may invoke + * the CDF. Token specific to the CDF belong in the + * start condition. */ - - <*>{ ^[ ]{6}D.*\n { if( !is_fixed_format() ) { @@ -2444,17 +2451,10 @@ BASIS { yy_push_state(basis); return BASIS; } OTHER { return OTHER; } - OVERRIDE { return OVERRIDE; } - PARAMETER { return PARAMETER_kw; } THRU { return THRU; } TRUE { return TRUE_kw; } ALL { return ALL; } - CALL-CONVENTION { return CALL_CONVENTION; } - COBOL-WORDS { return COBOL_WORDS; } - DEFINE { return CDF_DEFINE; } - SOURCE{BLANK}FORMAT { return SOURCE_FORMAT; } - } { -- 2.47.3