diff options
author | Roger Sayle <roger@eyesopen.com> | 2004-05-21 21:37:25 +0000 |
---|---|---|
committer | Roger Sayle <sayle@gcc.gnu.org> | 2004-05-21 21:37:25 +0000 |
commit | 11670eebf3c9844fc34793789397fe05d60b4a77 (patch) | |
tree | d8fe1bebb6dada99658d820fef0bcdf6b8789378 | |
parent | 0b817eb02d8c970b3041591f58a4a7c4253ed855 (diff) | |
download | gcc-11670eebf3c9844fc34793789397fe05d60b4a77.zip gcc-11670eebf3c9844fc34793789397fe05d60b4a77.tar.gz gcc-11670eebf3c9844fc34793789397fe05d60b4a77.tar.bz2 |
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
-rw-r--r-- | gcc/fortran/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/fortran/io.c | 36 | ||||
-rw-r--r-- | libgfortran/ChangeLog | 5 | ||||
-rw-r--r-- | libgfortran/io/format.c | 2 |
4 files changed, 47 insertions, 2 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index d91fa3d..fefaac0 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,5 +1,11 @@ 2004-05-21 Roger Sayle <roger@eyesopen.com> + * 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 <roger@eyesopen.com> + * io.c (check_format): Use gfc_notify_std to determine whether to issue an error/warning for omitting the digits from the X format. diff --git a/gcc/fortran/io.c b/gcc/fortran/io.c index 6a31bfa..120b440 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 7a2e993..3eedff3 100644 --- a/libgfortran/ChangeLog +++ b/libgfortran/ChangeLog @@ -1,3 +1,8 @@ +2004-05-21 Roger Sayle <roger@eyesopen.com> + + * io/format.c (parse_format_list): Allow the comma after a string + literal to be optional. + 2004-05-18 Paul Brook <paul@codesourcery.com> Feng Wang <fengwang@nudt.edu.cn> diff --git a/libgfortran/io/format.c b/libgfortran/io/format.c index 4255e29..f886f7f 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: |