From 11670eebf3c9844fc34793789397fe05d60b4a77 Mon Sep 17 00:00:00 2001 From: Roger Sayle Date: Fri, 21 May 2004 21:37:25 +0000 Subject: [PATCH] io.c (check_format): As a GNU extension... * io.c (check_format): As a GNU extension, allow the comma after a string literal to be optional in a format. Use gfc_notify_std to issue an error/warning as appropriate. * io/format.c (parse_format_list): Allow the comma after a string literal to be optional. From-SVN: r82109 --- gcc/fortran/ChangeLog | 6 ++++++ gcc/fortran/io.c | 36 +++++++++++++++++++++++++++++++++++- libgfortran/ChangeLog | 5 +++++ libgfortran/io/format.c | 2 +- 4 files changed, 47 insertions(+), 2 deletions(-) diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index d91fa3d31e2..fefaac0e0af 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,9 @@ +2004-05-21 Roger Sayle + + * io.c (check_format): As a GNU extension, allow the comma after a + string literal to be optional in a format. Use gfc_notify_std to + issue an error/warning as appropriate. + 2004-05-21 Roger Sayle * io.c (check_format): Use gfc_notify_std to determine whether to diff --git a/gcc/fortran/io.c b/gcc/fortran/io.c index 6a31bfa04fb..120b44003c4 100644 --- a/gcc/fortran/io.c +++ b/gcc/fortran/io.c @@ -481,9 +481,11 @@ format_item: case FMT_SIGN: case FMT_BLANK: - case FMT_CHAR: goto between_desc; + case FMT_CHAR: + goto extension_optional_comma; + case FMT_COLON: case FMT_SLASH: goto optional_comma; @@ -728,6 +730,38 @@ optional_comma: goto format_item; +extension_optional_comma: + /* As a GNU extension, permit a missing comma after a string literal. */ + t = format_lex (); + switch (t) + { + case FMT_COMMA: + break; + + case FMT_RPAREN: + level--; + if (level < 0) + goto finished; + goto between_desc; + + case FMT_COLON: + case FMT_SLASH: + goto optional_comma; + + case FMT_END: + error = unexpected_end; + goto syntax; + + default: + if (gfc_notify_std (GFC_STD_GNU, "Extension: Missing comma at %C") + == FAILURE) + return FAILURE; + saved_token = t; + break; + } + + goto format_item; + syntax: /* Something went wrong. If the format we're checking is a string, generate a warning, since the program is correct. If the format diff --git a/libgfortran/ChangeLog b/libgfortran/ChangeLog index 7a2e99366d3..3eedff3926a 100644 --- a/libgfortran/ChangeLog +++ b/libgfortran/ChangeLog @@ -1,3 +1,8 @@ +2004-05-21 Roger Sayle + + * io/format.c (parse_format_list): Allow the comma after a string + literal to be optional. + 2004-05-18 Paul Brook Feng Wang diff --git a/libgfortran/io/format.c b/libgfortran/io/format.c index 4255e29f49c..f886f7f7187 100644 --- a/libgfortran/io/format.c +++ b/libgfortran/io/format.c @@ -543,7 +543,7 @@ format_item: tail->u.string.p = string; tail->u.string.length = value; tail->repeat = 1; - goto between_desc; + goto optional_comma; case FMT_S: case FMT_SS: -- 2.30.2