io.c (check_format): As a GNU extension...
authorRoger Sayle <roger@eyesopen.com>
Fri, 21 May 2004 21:37:25 +0000 (21:37 +0000)
committerRoger Sayle <sayle@gcc.gnu.org>
Fri, 21 May 2004 21:37:25 +0000 (21:37 +0000)
* 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
gcc/fortran/io.c
libgfortran/ChangeLog
libgfortran/io/format.c

index d91fa3d31e23ba93ea5c91e253cdd1b0fd723c9f..fefaac0e0af1b90f90ed00ed83f102e6b0df378e 100644 (file)
@@ -1,3 +1,9 @@
+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
index 6a31bfa04fb52db8ee1dca4db745058a1b1db25e..120b44003c413a1aaa28c91c8d18fc9f520fbdfb 100644 (file)
@@ -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
index 7a2e99366d394f9031320873fd23eb5f4b2b9acf..3eedff3926a6a1faab394d855a98c6ffb2982208 100644 (file)
@@ -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>
 
index 4255e29f49c952a5e809ecd64039fe70413a260f..f886f7f718778cca003e908bf113296096a9fb91 100644 (file)
@@ -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: