]> git.saurik.com Git - bison.git/commitdiff
* src/getargs.c (short_options): Split and sort for readability.
authorAkim Demaille <akim@epita.fr>
Thu, 28 Feb 2008 16:01:16 +0000 (16:01 +0000)
committerAkim Demaille <akim@epita.fr>
Thu, 28 Feb 2008 16:01:16 +0000 (16:01 +0000)
-g and -x take optional arguments, just like their long options.
* build-aux/cross-options.pl: Use /x to make the regexp easier to
understand.
Fix the handling of $opt which resulted in all the argument to be
considered as optional.

ChangeLog
build-aux/cross-options.pl
src/getargs.c

index 6b94a4098a775c939c62c91691c421c5e3a6ff0b..caa65b627ce2b60cab53be0e3829e12da3ea3246 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2008-02-28  Akim Demaille  <akim@epita.fr>
+
+       * src/getargs.c (short_options): Split and sort for readability.
+       -g and -x take optional arguments, just like their long options.
+       * build-aux/cross-options.pl: Use /x to make the regexp easier to
+       understand.
+       Fix the handling of $opt which resulted in all the argument to be
+       considered as optional.
+
 2008-02-22  Joel E. Denny  <jdenny@ces.clemson.edu>
 
        * NEWS (2.3a+): Don't say %language is experimental.  Mention Java and
 2008-02-22  Joel E. Denny  <jdenny@ces.clemson.edu>
 
        * NEWS (2.3a+): Don't say %language is experimental.  Mention Java and
index cbd11888bd21df4f1fbe338ef1612e5281f28702..31733e72d3fdb6ff471d41144546d7f3eab86ea1 100755 (executable)
@@ -7,7 +7,12 @@ use strict;
 my %option;
 while (<>)
 {
 my %option;
 while (<>)
 {
-    if (/^\s*(?:(-\w), )?(--[-\w]+)(\[?)(=[-\w]+)?\]?/)
+    if (/^\s*          # Initial spaces.
+        (?:(-\w),\s+)? # $1: Possible short option.
+        (--[-\w]+)     # $2: Long option.
+        (\[?)          # $3: '[' iff the argument is optional.
+        (?:=([-\w]+))? # $4: Possible argument name.
+        /x)
     {
        my ($short, $long, $opt, $arg) = ($1, $2, $3, $4);
        $short = defined $short ? '@option{' . $short . '}' : '';
     {
        my ($short, $long, $opt, $arg) = ($1, $2, $3, $4);
        $short = defined $short ? '@option{' . $short . '}' : '';
@@ -16,7 +21,7 @@ while (<>)
            $arg =~ s/^=//;
            $arg = '@var{' . lc ($arg) . '}';
            $arg = '[' . $arg . ']'
            $arg =~ s/^=//;
            $arg = '@var{' . lc ($arg) . '}';
            $arg = '[' . $arg . ']'
-               if defined $opt;
+               if $opt eq '[';
            $option{"$long=$arg"} = $short ? "$short $arg" : '';
        }
        else
            $option{"$long=$arg"} = $short ? "$short $arg" : '';
        }
        else
index 9661fefee8e0f35f00c2f63fed66a7c484640298..77f147d35875f7e9c8f74b9168695bdfc046c98a 100644 (file)
@@ -403,8 +403,30 @@ language_argmatch (char const *arg, int prio, location const *loc)
 | Process the options.  |
 `----------------------*/
 
 | Process the options.  |
 `----------------------*/
 
-/* Shorts options.  */
-static char const short_options[] = "yvegxdhr:L:ltknVo:b:p:S:T::W";
+/* Shorts options.
+   Should be computed from long_options.  */
+static char const short_options[] =
+  "L:"
+  "S:"
+  "T::"
+  "V"
+  "W"
+  "b:"
+  "d"
+  "e"
+  "g::"
+  "h"
+  "k"
+  "l"
+  "n"
+  "o:"
+  "p:"
+  "r:"
+  "t"
+  "v"
+  "x::"
+  "y"
+  ;
 
 /* Values for long options that do not have single-letter equivalents.  */
 enum
 
 /* Values for long options that do not have single-letter equivalents.  */
 enum