bison-patches
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: preparing for 2.3b


From: Joel E. Denny
Subject: Re: preparing for 2.3b
Date: Sat, 8 Mar 2008 15:50:11 -0500 (EST)

On Sat, 8 Mar 2008, Joel E. Denny wrote:

> On Sat, 8 Mar 2008, Akim Demaille wrote:
> 
> > 
> > Le 7 mars 08 ? 01:24, Joel E. Denny a ?crit :
> > 
> > > But should we reserve -D just in case we ever want it to do something like
> > > gcc's -D?  I don't know.
> > 
> > If we do, we can use VAR=VALUE like Make.  Otherwise, we
> > can use -H, like --header?  --defines is really a bit
> > meaningless.  And --header might also be too C/C++
> > centric, maybe --declaration, or --interface.
> 
> I agree that --defines is not the best name.
> 
> Maybe I can just drop -D from my patch but leave --defines and -d as 
> separate options.  Then we can release 2.3b and figure this issue out 
> afterwards.  Does that work for you?

I went ahead and committed the following patch, which implements that.  I 
don't think the patch makes any changes we haven't agreed upon.  Of 
course, we can revise further if needed, but I'd really like to see 2.3b 
released soon.

Index: ChangeLog
===================================================================
RCS file: /sources/bison/bison/ChangeLog,v
retrieving revision 1.1778
diff -p -u -r1.1778 ChangeLog
--- ChangeLog   28 Feb 2008 16:28:07 -0000      1.1778
+++ ChangeLog   8 Mar 2008 20:23:14 -0000
@@ -1,3 +1,16 @@
+2008-03-08  Joel E. Denny  <address@hidden>
+
+       * NEWS (2.3a+): Mention that -g now takes an argument.
+       * doc/bison.texinfo (Bison Options): Reword -W entry a little for
+       consistency.  Update the -g and -x entries now that they take
+       arguments.  Use brackets to indicate optional arguments.
+       * src/getargs.c (usage): Explain the relationship between arguments of
+       long and short options more completely.  Document --defines and -d
+       separately since the former takes an argument but, for POSIX Yacc, the
+       latter does not.
+       (short_options): Let -W take an optional argument like --warnings.
+       (getargs): Sort cases.  
+
 2008-02-28  Akim Demaille  <address@hidden>
 
        * doc/bison.texinfo: Fix a few typos.
Index: NEWS
===================================================================
RCS file: /sources/bison/bison/NEWS,v
retrieving revision 1.187
diff -p -u -r1.187 NEWS
--- NEWS        23 Feb 2008 04:26:14 -0000      1.187
+++ NEWS        8 Mar 2008 20:23:15 -0000
@@ -32,7 +32,8 @@ Changes in version 2.3a+ (????-??-??):
   feedback will help to stabilize it.
 
 * The -g and --graph options now output graphs in Graphviz DOT format,
-  not VCG format.
+  not VCG format.  Like --graph, -g now also takes an optional FILE argument
+  and thus cannot be bundled with other short options.
 
 * Java
 
Index: doc/bison.texinfo
===================================================================
RCS file: /sources/bison/bison/doc/bison.texinfo,v
retrieving revision 1.254
diff -p -u -r1.254 bison.texinfo
--- doc/bison.texinfo   28 Feb 2008 16:28:07 -0000      1.254
+++ doc/bison.texinfo   8 Mar 2008 20:23:19 -0000
@@ -7782,16 +7782,16 @@ Output warnings falling in @var{category
 of:
 @table @code
 @item midrule-values
-Warn about about mid-rule values that are set but not used within any of
-the actions of the parent rule.  For example, Bison warns about unused
address@hidden in:
+Warn about mid-rule values that are set but not used within any of the actions
+of the parent rule.
+For example, warn about unused @code{$2} in:
 
 @example
 exp: '1' @{ $$ = 1; @} '+' exp @{ $$ = $1 + $4; @};
 @end example
 
-It also warns about mid-rule values that are used but not set.  For
-example, Bison warns about unset @code{$$} in the mid-rule action in:
+Also warn about mid-rule values that are used but not set.
+For example, warn about unset @code{$$} in the mid-rule action in:
 
 @example
  exp: '1' @{ $1 = 1; @} '+' exp @{ $$ = $2 + $4; @};
@@ -7799,18 +7799,18 @@ example, Bison warns about unset @code{$
 
 These warnings are not enabled by default since they sometimes prove to
 be false alarms in existing grammars employing the Yacc constructs
address@hidden or @address@hidden (where @var{n} is some positive integer).
address@hidden or @address@hidden (where @var{n} is some positive integer).
 
 
 @item yacc
 Incompatibilities with @acronym{POSIX} Yacc.
 
 @item all
-all the warnings
+All the warnings.
 @item none
-turn off all the warnings
+Turn off all the warnings.
 @item error
-treat warnings as errors
+Treat warnings as errors.
 @end table
 
 A category can be turned off by prefixing its name with @samp{no-}.  For
@@ -7876,14 +7876,15 @@ Pretend that @code{%token-table} was spe
 Adjust the output:
 
 @table @option
address@hidden -d
address@hidden --defines
address@hidden address@hidden
 Pretend that @code{%defines} was specified, i.e., write an extra output
 file containing macro definitions for the token type names defined in
 the grammar, as well as a few other declarations.  @xref{Decl Summary}.
 
address@hidden address@hidden
-Same as above, but save in the file @var{defines-file}.
address@hidden -d
+This is the same as @code{--defines} except @code{-d} does not accept a
address@hidden argument since POSIX Yacc requires that @code{-d} can be bundled
+with other short options.
 
 @item -b @var{file-prefix}
 @itemx address@hidden
@@ -7925,22 +7926,19 @@ Specify the @var{file} for the parser fi
 The other output files' names are constructed from @var{file} as
 described under the @samp{-v} and @samp{-d} options.
 
address@hidden -g
address@hidden address@hidden
address@hidden address@hidden
 Output a graphical representation of the @acronym{LALR}(1) grammar
 automaton computed by Bison, in @uref{http://www.graphviz.org/, Graphviz}
 @uref{http://www.graphviz.org/doc/info/lang.html, @acronym{DOT}} format.
-If the grammar file is @file{foo.y}, the output file will
-be @file{foo.dot}.
-
address@hidden address@hidden
-The behavior of @var{--graph} is the same as @samp{-g}.  The only
-difference is that it has an optional argument which is the name of
-the output graph file.
address@hidden@var{file}} is optional.
+If omitted and the grammar file is @file{foo.y}, the output file will be
address@hidden
 
address@hidden -x
address@hidden address@hidden
address@hidden address@hidden
address@hidden address@hidden
 Output an XML report of the @acronym{LALR}(1) automaton computed by Bison.
address@hidden@var{file}} is optional.
address@hidden@var{file}} is optional.
 If omitted and the grammar file is @file{foo.y}, the output file will be
 @file{foo.xml}.
 (The current XML schema is experimental and may evolve.
Index: src/getargs.c
===================================================================
RCS file: /sources/bison/bison/src/getargs.c,v
retrieving revision 1.105
diff -p -u -r1.105 getargs.c
--- src/getargs.c       28 Feb 2008 16:01:16 -0000      1.105
+++ src/getargs.c       8 Mar 2008 20:23:22 -0000
@@ -254,6 +254,9 @@ Generate LALR(1) and GLR parsers.\n\
       fputs (_("\
 Mandatory arguments to long options are mandatory for short options too.\n\
 "), stdout);
+      fputs (_("\
+The same is true for optional arguments.\n\
+"), stdout);
 
       fputs (_("\
 \n\
@@ -279,9 +282,12 @@ Parser:\n\
 \n\
 "), stdout);
 
+      /* Keep -d and --defines separate so that ../build-aux/cross-options.pl
+       * won't assume that -d also takes an argument.  */
       fputs (_("\
 Output:\n\
-  -d, --defines[=FILE]       also produce a header file\n\
+      --defines[=FILE]       also produce a header file\n\
+  -d                         likewise but cannot specify FILE (for POSIX 
Yacc)\n\
   -r, --report=THINGS        also produce details on the automaton\n\
       --report-file=FILE     write report to FILE\n\
   -v, --verbose              same as `--report=state'\n\
@@ -410,7 +416,7 @@ static char const short_options[] =
   "S:"
   "T::"
   "V"
-  "W"
+  "W::"
   "b:"
   "d"
   "e"
@@ -503,27 +509,17 @@ getargs (int argc, char *argv[])
        /* Certain long options cause getopt_long to return 0.  */
        break;
 
-      case 'b':
-       spec_file_prefix = AS_FILE_NAME (optarg);
-       break;
-
-      case 'g':
-       /* Here, the -g and --graph=FILE options are differentiated.  */
-       graph_flag = true;
+      case 'd':
+       /* Here, the -d and --defines options are differentiated.  */
+       defines_flag = true;
        if (optarg)
-         spec_graph_file = xstrdup (AS_FILE_NAME (optarg));
+         spec_defines_file = xstrdup (AS_FILE_NAME (optarg));
        break;
 
-      case 'x':
-       /* Here, the -x and --xml=FILE options are differentiated.  */
-       xml_flag = true;
-       if (optarg)
-         spec_xml_file = xstrdup (AS_FILE_NAME (optarg));
+      case 'I':
+       include = AS_FILE_NAME (optarg);
        break;
 
-      case 'h':
-       usage (EXIT_SUCCESS);
-
       case 'L':
        language_argmatch (optarg, 0, NULL);
        break;
@@ -532,17 +528,34 @@ getargs (int argc, char *argv[])
        skeleton_arg (AS_FILE_NAME (optarg), 0, NULL);
        break;
 
-      case 'I':
-       include = AS_FILE_NAME (optarg);
+      case 'T':
+       FLAGS_ARGMATCH (trace, optarg);
        break;
 
-      case 'd':
-       /* Here, the -d and --defines options are differentiated.  */
-       defines_flag = true;
+      case 'V':
+       version ();
+       exit (EXIT_SUCCESS);
+
+      case 'W':
        if (optarg)
-         spec_defines_file = xstrdup (AS_FILE_NAME (optarg));
+         FLAGS_ARGMATCH (warnings, optarg);
+       else
+         warnings_flag |= warnings_all;
+       break;
+
+      case 'b':
+       spec_file_prefix = AS_FILE_NAME (optarg);
+       break;
+
+      case 'g':
+       graph_flag = true;
+       if (optarg)
+         spec_graph_file = xstrdup (AS_FILE_NAME (optarg));
        break;
 
+      case 'h':
+       usage (EXIT_SUCCESS);
+
       case 'k':
        token_table_flag = true;
        break;
@@ -563,35 +576,22 @@ getargs (int argc, char *argv[])
        FLAGS_ARGMATCH (report, optarg);
        break;
 
-      case REPORT_FILE_OPTION:
-       spec_verbose_file = xstrdup (AS_FILE_NAME (optarg));
-       break;
-
-      case 'T':
-       FLAGS_ARGMATCH (trace, optarg);
-       break;
-
       case 't':
        debug_flag = true;
        break;
 
-      case 'V':
-       version ();
-       exit (EXIT_SUCCESS);
-
       case 'v':
        report_flag |= report_states;
        break;
 
-      case 'y':
-       yacc_flag = true;
+      case 'x':
+       xml_flag = true;
+       if (optarg)
+         spec_xml_file = xstrdup (AS_FILE_NAME (optarg));
        break;
 
-      case 'W':
-       if (optarg)
-         FLAGS_ARGMATCH (warnings, optarg);
-       else
-         warnings_flag |= warnings_all;
+      case 'y':
+       yacc_flag = true;
        break;
 
       case LOCATIONS_OPTION:
@@ -606,6 +606,10 @@ getargs (int argc, char *argv[])
        printf ("%s\n", compute_pkgdatadir ());
        exit (EXIT_SUCCESS);
 
+      case REPORT_FILE_OPTION:
+       spec_verbose_file = xstrdup (AS_FILE_NAME (optarg));
+       break;
+
       default:
        usage (EXIT_FAILURE);
       }

reply via email to

[Prev in Thread] Current Thread [Next in Thread]