X-Git-Url: https://git.saurik.com/bison.git/blobdiff_plain/7172e23e8ffb95b8cafee24c4f36c46ca709507f..9ca7f077a0a5ecdd00c5945c7a7bd3cf46e23c13:/src/getargs.c diff --git a/src/getargs.c b/src/getargs.c index dbd5b6dd..c030db80 100644 --- a/src/getargs.c +++ b/src/getargs.c @@ -1,30 +1,30 @@ /* Parse command line arguments for Bison. Copyright (C) 1984, 1986, 1989, 1992, 2000, 2001, 2002, 2003, 2004, - 2005, 2006 Free Software Foundation, Inc. + 2005, 2006, 2007 Free Software Foundation, Inc. This file is part of Bison, the GNU Compiler Compiler. - Bison is free software; you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. - Bison is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. You should have received a copy of the GNU General Public License - along with Bison; see the file COPYING. If not, write to the Free - Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA - 02110-1301, USA. */ + along with this program. If not, see . */ #include #include "system.h" #include "revision.h" +#include "output.h" #include +#include #include #include @@ -49,9 +49,9 @@ bool debug_flag; bool defines_flag; bool graph_flag; +bool xml_flag; bool locations_flag; bool no_lines_flag; -bool no_parser_flag; bool token_table_flag; bool yacc_flag; /* for -y */ @@ -59,9 +59,6 @@ bool error_verbose = false; bool nondeterministic_parser = false; bool glr_parser = false; -bool pull_parser = true; -bool pure_parser = false; -bool push_parser = false; int report_flag = report_none; int trace_flag = trace_none; @@ -70,6 +67,7 @@ int warnings_flag = warnings_none; static struct bison_language const valid_languages[] = { { "c", "c-skel.m4", ".c", ".h", true }, { "c++", "c++-skel.m4", ".cc", ".hh", true }, + { "java", "java-skel.m4", ".java", ".java", false }, { "", "", "", "", false } }; @@ -263,7 +261,9 @@ Operation modes:\n\ -h, --help display this help and exit\n\ -V, --version output version information and exit\n\ --print-localedir output directory containing locale-dependent data\n\ + --print-datadir output directory containing skeletons and XSLT\n\ -y, --yacc emulate POSIX Yacc\n\ + -W, --warnings=[CATEGORY] report the warnings falling in CATEGORY\n\ \n\ "), stdout); @@ -274,19 +274,31 @@ Parser:\n\ --locations enable locations computation\n\ -p, --name-prefix=PREFIX prepend PREFIX to the external symbols\n\ -l, --no-lines don't generate `#line' directives\n\ - -n, --no-parser generate the tables only\n\ -k, --token-table include a table of token names\n\ \n\ "), stdout); fputs (_("\ Output:\n\ - -d, --defines also produce a header file\n\ + -d, --defines[=FILE] also produce a header file\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\ -b, --file-prefix=PREFIX specify a PREFIX for output files\n\ -o, --output=FILE leave output to FILE\n\ - -g, --graph also output a graph of the automaton\n\ + -g, --graph[=FILE] also output a graph of the automaton\n\ + -x, --xml[=FILE] also output an XML report of the automaton\n\ +\n\ +"), stdout); + + fputs (_("\ +Warning categories include:\n\ + `midrule-values' unset or unused midrule values\n\ + `yacc' incompatibilities with POSIX YACC\n\ + `all' all the warnings\n\ + `no-CATEGORY' turn off warnings in CATEGORY\n\ + `none' turn off all the warnings\n\ + `error' treat warnings as errors\n\ \n\ "), stdout); @@ -323,7 +335,8 @@ version (void) putc ('\n', stdout); fprintf (stdout, - _("Copyright (C) %d Free Software Foundation, Inc.\n"), 2006); + _("Copyright (C) %d Free Software Foundation, Inc.\n"), + PACKAGE_COPYRIGHT_YEAR); fputs (_("\ This is free software; see the source for copying conditions. There is NO\n\ @@ -365,7 +378,7 @@ language_argmatch (char const *arg, int prio, location const *loc) { int i; for (i = 0; valid_languages[i].language[0]; i++) - if (strcasecmp (arg, valid_languages[i].language) == 0) + if (c_strcasecmp (arg, valid_languages[i].language) == 0) { language_prio = prio; language = &valid_languages[i]; @@ -389,13 +402,15 @@ language_argmatch (char const *arg, int prio, location const *loc) `----------------------*/ /* Shorts options. */ -static char const short_options[] = "yvegdhr:L:ltknVo:b:p:S:T::W"; +static char const short_options[] = "yvegxdhr:L:ltknVo:b:p:S:T::W"; /* Values for long options that do not have single-letter equivalents. */ enum { LOCATIONS_OPTION = CHAR_MAX + 1, - PRINT_LOCALEDIR_OPTION + PRINT_LOCALEDIR_OPTION, + PRINT_DATADIR_OPTION, + REPORT_FILE_OPTION }; static struct option const long_options[] = @@ -404,6 +419,7 @@ static struct option const long_options[] = { "help", no_argument, 0, 'h' }, { "version", no_argument, 0, 'V' }, { "print-localedir", no_argument, 0, PRINT_LOCALEDIR_OPTION }, + { "print-datadir", no_argument, 0, PRINT_DATADIR_OPTION }, { "warnings", optional_argument, 0, 'W' }, /* Parser. */ @@ -415,7 +431,9 @@ static struct option const long_options[] = { "output", required_argument, 0, 'o' }, { "output-file", required_argument, 0, 'o' }, { "graph", optional_argument, 0, 'g' }, + { "xml", optional_argument, 0, 'x' }, { "report", required_argument, 0, 'r' }, + { "report-file", required_argument, 0, REPORT_FILE_OPTION }, { "verbose", no_argument, 0, 'v' }, /* Hidden. */ @@ -432,7 +450,6 @@ static struct option const long_options[] = { "debug", no_argument, 0, 't' }, { "locations", no_argument, 0, LOCATIONS_OPTION }, { "no-lines", no_argument, 0, 'l' }, - { "no-parser", no_argument, 0, 'n' }, { "raw", no_argument, 0, 0 }, { "skeleton", required_argument, 0, 'S' }, { "language", required_argument, 0, 'L' }, @@ -473,6 +490,13 @@ getargs (int argc, char *argv[]) spec_graph_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)); + break; + case 'h': usage (EXIT_SUCCESS); @@ -503,10 +527,6 @@ getargs (int argc, char *argv[]) no_lines_flag = true; break; - case 'n': - no_parser_flag = true; - break; - case 'o': spec_outfile = AS_FILE_NAME (optarg); break; @@ -519,6 +539,10 @@ 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; @@ -554,6 +578,10 @@ getargs (int argc, char *argv[]) printf ("%s\n", LOCALEDIR); exit (EXIT_SUCCESS); + case PRINT_DATADIR_OPTION: + printf ("%s\n", compute_pkgdatadir ()); + exit (EXIT_SUCCESS); + default: usage (EXIT_FAILURE); }