* io.c (check_format): As a GNU extension, allow the comma after a
authorsayle <sayle@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 21 May 2004 21:37:25 +0000 (21:37 +0000)
committersayle <sayle@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 21 May 2004 21:37:25 +0000 (21:37 +0000)
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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@82109 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/fortran/ChangeLog
gcc/fortran/io.c
libgfortran/ChangeLog
libgfortran/io/format.c

index d91fa3d..fefaac0 100644 (file)
@@ -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.
 
index 6a31bfa..120b440 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 7a2e993..3eedff3 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 4255e29..f886f7f 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: