1cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* Parse command line arguments for Bison. 2cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 3cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project Copyright (C) 1984, 1986, 1989, 1992, 2000, 2001, 2002, 2003, 2004, 4cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 2005, 2006 Free Software Foundation, Inc. 5cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 6cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project This file is part of Bison, the GNU Compiler Compiler. 7cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 8cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project Bison is free software; you can redistribute it and/or modify it 9cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project under the terms of the GNU General Public License as published by 10cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project the Free Software Foundation; either version 2, or (at your option) 11cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project any later version. 12cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 13cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project Bison is distributed in the hope that it will be useful, but 14cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project WITHOUT ANY WARRANTY; without even the implied warranty of 15cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 16cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project General Public License for more details. 17cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 18cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project You should have received a copy of the GNU General Public License 19cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project along with Bison; see the file COPYING. If not, write to the Free 20cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 21cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 02110-1301, USA. */ 22cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 23cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#include <config.h> 24cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#include "system.h" 25cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 26cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#include <argmatch.h> 27cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#include <error.h> 28cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 29cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* Hack to get <getopt.h> to declare getopt with a prototype. */ 30cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#if lint && ! defined __GNU_LIBRARY__ 31cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# define __GNU_LIBRARY__ 32cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# define HACK_FOR___GNU_LIBRARY___PROTOTYPE 1 33cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#endif 34cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 35cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#include <getopt.h> 36cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 37cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#ifdef HACK_FOR___GNU_LIBRARY___PROTOTYPE 38cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# undef __GNU_LIBRARY__ 39cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# undef HACK_FOR___GNU_LIBRARY___PROTOTYPE 40cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#endif 41cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 42cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#include "complain.h" 43cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#include "files.h" 44cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#include "getargs.h" 45cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#include "uniqstr.h" 46cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 47cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectbool debug_flag; 48cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectbool defines_flag; 49cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectbool graph_flag; 50cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectbool locations_flag; 51cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectbool no_lines_flag; 52cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectbool no_parser_flag; 53cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectbool token_table_flag; 54cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectbool yacc_flag; /* for -y */ 55cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 56cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectbool error_verbose = false; 57cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 58cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectbool nondeterministic_parser = false; 59cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectbool glr_parser = false; 60cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectbool pure_parser = false; 61cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 62cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectint report_flag = report_none; 63cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectint trace_flag = trace_none; 64cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 65cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectconst char *skeleton = NULL; 66cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectconst char *include = NULL; 67cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 68cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectextern char *program_name; 69cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 70cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 71cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/*---------------------. 72cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project| --trace's handling. | 73cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project`---------------------*/ 74cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 75cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic const char * const trace_args[] = 76cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 77cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* In a series of synonyms, present the most meaningful first, so 78cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project that argmatch_valid be more readable. */ 79cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project "none - no report", 80cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project "scan - grammar scanner traces", 81cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project "parse - grammar parser traces", 82cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project "automaton - contruction of the automaton", 83cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project "bitsets - use of bitsets", 84cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project "grammar - reading, reducing of the grammar", 85cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project "resource - memory consumption (where available)", 86cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project "sets - grammar sets: firsts, nullable etc.", 87cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project "tools - m4 invocation", 88cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project "m4 - m4 traces", 89cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project "skeleton - skeleton postprocessing", 90cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project "time - time consumption", 91cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project "all - all of the above", 92cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 0 93cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project}; 94cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 95cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic const int trace_types[] = 96cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 97cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project trace_none, 98cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project trace_scan, 99cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project trace_parse, 100cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project trace_automaton, 101cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project trace_bitsets, 102cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project trace_grammar, 103cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project trace_resource, 104cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project trace_sets, 105cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project trace_tools, 106cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project trace_m4, 107cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project trace_skeleton, 108cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project trace_time, 109cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project trace_all 110cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project}; 111cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 112cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectARGMATCH_VERIFY (trace_args, trace_types); 113cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 114cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic void 115cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projecttrace_argmatch (char *args) 116cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 117cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (args) 118cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 119cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project args = strtok (args, ","); 120cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project do 121cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 122cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project int trace = XARGMATCH ("--trace", args, 123cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project trace_args, trace_types); 124cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (trace == trace_none) 125cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project trace_flag = trace_none; 126cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project else 127cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project trace_flag |= trace; 128cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 129cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project while ((args = strtok (NULL, ","))); 130cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 131cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project else 132cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project trace_flag = trace_all; 133cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project} 134cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 135cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 136cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/*----------------------. 137cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project| --report's handling. | 138cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project`----------------------*/ 139cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 140cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic const char * const report_args[] = 141cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 142cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* In a series of synonyms, present the most meaningful first, so 143cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project that argmatch_valid be more readable. */ 144cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project "none", 145cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project "state", "states", 146cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project "itemset", "itemsets", 147cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project "look-ahead", "lookahead", "lookaheads", 148cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project "solved", 149cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project "all", 150cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 0 151cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project}; 152cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 153cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic const int report_types[] = 154cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 155cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project report_none, 156cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project report_states, report_states, 157cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project report_states | report_itemsets, report_states | report_itemsets, 158cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project report_states | report_look_ahead_tokens, 159cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project report_states | report_look_ahead_tokens, 160cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project report_states | report_look_ahead_tokens, 161cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project report_states | report_solved_conflicts, 162cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project report_all 163cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project}; 164cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 165cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectARGMATCH_VERIFY (report_args, report_types); 166cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 167cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic void 168cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectreport_argmatch (char *args) 169cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 170cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project args = strtok (args, ","); 171cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project do 172cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 173cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project int report = XARGMATCH ("--report", args, 174cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project report_args, report_types); 175cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (report == report_none) 176cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project report_flag = report_none; 177cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project else 178cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project report_flag |= report; 179cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 180cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project while ((args = strtok (NULL, ","))); 181cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project} 182cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 183cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 184cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/*-------------------------------------------. 185cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project| Display the help message and exit STATUS. | 186cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project`-------------------------------------------*/ 187cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 188cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic void usage (int) ATTRIBUTE_NORETURN; 189cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 190cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic void 191cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectusage (int status) 192cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 193cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (status != 0) 194cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project fprintf (stderr, _("Try `%s --help' for more information.\n"), 195cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project program_name); 196cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project else 197cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 198cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* Some efforts were made to ease the translators' task, please 199cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project continue. */ 200cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project fputs (_("\ 201cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectGNU bison generates parsers for LALR(1) grammars.\n"), stdout); 202cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project putc ('\n', stdout); 203cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 204cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project fprintf (stdout, _("\ 205cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectUsage: %s [OPTION]... FILE\n"), program_name); 206cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project putc ('\n', stdout); 207cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 208cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project fputs (_("\ 209cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectIf a long option shows an argument as mandatory, then it is mandatory\n\ 210cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectfor the equivalent short option also. Similarly for optional arguments.\n"), 211cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project stdout); 212cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project putc ('\n', stdout); 213cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 214cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project fputs (_("\ 215cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectOperation modes:\n\ 216cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project -h, --help display this help and exit\n\ 217cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project -V, --version output version information and exit\n\ 218cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project --print-localedir output directory containing locale-dependent data\n\ 219cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project -y, --yacc emulate POSIX yacc\n"), stdout); 220cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project putc ('\n', stdout); 221cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 222cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project fputs (_("\ 223cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectParser:\n\ 224cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project -S, --skeleton=FILE specify the skeleton to use\n\ 225cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project -t, --debug instrument the parser for debugging\n\ 226cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project --locations enable locations computation\n\ 227cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project -p, --name-prefix=PREFIX prepend PREFIX to the external symbols\n\ 228cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project -l, --no-lines don't generate `#line' directives\n\ 229cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project -n, --no-parser generate the tables only\n\ 230cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project -k, --token-table include a table of token names\n\ 231cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project"), stdout); 232cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project putc ('\n', stdout); 233cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 234cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project fputs (_("\ 235cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectOutput:\n\ 236cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project -d, --defines also produce a header file\n\ 237cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project -r, --report=THINGS also produce details on the automaton\n\ 238cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project -v, --verbose same as `--report=state'\n\ 239cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project -b, --file-prefix=PREFIX specify a PREFIX for output files\n\ 240cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project -o, --output=FILE leave output to FILE\n\ 241cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project -g, --graph also produce a VCG description of the automaton\n\ 242cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project"), stdout); 243cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project putc ('\n', stdout); 244cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 245cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project fputs (_("\ 246cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectTHINGS is a list of comma separated words that can include:\n\ 247cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project `state' describe the states\n\ 248cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project `itemset' complete the core item sets with their closure\n\ 249cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project `look-ahead' explicitly associate look-ahead tokens to items\n\ 250cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project `solved' describe shift/reduce conflicts solving\n\ 251cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project `all' include all the above information\n\ 252cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project `none' disable the report\n\ 253cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project"), stdout); 254cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project putc ('\n', stdout); 255cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 256cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project fputs (_("\ 257cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectReport bugs to <bug-bison@gnu.org>.\n"), stdout); 258cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 259cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 260cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project exit (status); 261cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project} 262cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 263cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 264cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/*------------------------------. 265cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project| Display the version message. | 266cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project`------------------------------*/ 267cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 268cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic void 269cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectversion (void) 270cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 271cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* Some efforts were made to ease the translators' task, please 272cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project continue. */ 273cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project printf (_("bison (GNU Bison) %s"), VERSION); 274cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project putc ('\n', stdout); 275cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project fputs (_("Written by Robert Corbett and Richard Stallman.\n"), stdout); 276cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project putc ('\n', stdout); 277cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 278cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project fprintf (stdout, 279cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project _("Copyright (C) %d Free Software Foundation, Inc.\n"), 2006); 280cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 281cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project fputs (_("\ 282cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source ProjectThis is free software; see the source for copying conditions. There is NO\n\ 283cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectwarranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n\ 284cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project"), 285cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project stdout); 286cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project} 287cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 288cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 289cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/*----------------------. 290cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project| Process the options. | 291cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project`----------------------*/ 292cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 293cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* Shorts options. */ 294cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic char const short_options[] = "yvegdhr:ltknVo:b:p:S:T::"; 295cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 296cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* Values for long options that do not have single-letter equivalents. */ 297cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectenum 298cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 299cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project LOCATIONS_OPTION = CHAR_MAX + 1, 300cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project PRINT_LOCALEDIR_OPTION 301cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project}; 302cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 303cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectstatic struct option const long_options[] = 304cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 305cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* Operation modes. */ 306cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { "help", no_argument, 0, 'h' }, 307cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { "version", no_argument, 0, 'V' }, 308cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { "print-localedir", no_argument, 0, PRINT_LOCALEDIR_OPTION }, 309cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 310cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* Parser. */ 311cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { "name-prefix", required_argument, 0, 'p' }, 312cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { "include", required_argument, 0, 'I' }, 313cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 314cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* Output. */ 315cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { "file-prefix", required_argument, 0, 'b' }, 316cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { "output", required_argument, 0, 'o' }, 317cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { "output-file", required_argument, 0, 'o' }, 318cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { "graph", optional_argument, 0, 'g' }, 319cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { "report", required_argument, 0, 'r' }, 320cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { "verbose", no_argument, 0, 'v' }, 321cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 322cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* Hidden. */ 323cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { "trace", optional_argument, 0, 'T' }, 324cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 325cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* Output. */ 326cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { "defines", optional_argument, 0, 'd' }, 327cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 328cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* Operation modes. */ 329cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { "fixed-output-files", no_argument, 0, 'y' }, 330cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { "yacc", no_argument, 0, 'y' }, 331cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 332cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* Parser. */ 333cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { "debug", no_argument, 0, 't' }, 334cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { "locations", no_argument, 0, LOCATIONS_OPTION }, 335cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { "no-lines", no_argument, 0, 'l' }, 336cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { "no-parser", no_argument, 0, 'n' }, 337cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { "raw", no_argument, 0, 0 }, 338cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { "skeleton", required_argument, 0, 'S' }, 339cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { "token-table", no_argument, 0, 'k' }, 340cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 341cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project {0, 0, 0, 0} 342cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project}; 343cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 344cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project/* Under DOS, there is no difference on the case. This can be 345cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project troublesome when looking for `.tab' etc. */ 346cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#ifdef MSDOS 347cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# define AS_FILE_NAME(File) (strlwr (File), (File)) 348cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#else 349cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project# define AS_FILE_NAME(File) (File) 350cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project#endif 351cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 352cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectvoid 353cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Projectgetargs (int argc, char *argv[]) 354cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project{ 355cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project int c; 356cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 357cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project while ((c = getopt_long (argc, argv, short_options, long_options, NULL)) 358cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project != -1) 359cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project switch (c) 360cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 361cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project case 0: 362cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* Certain long options cause getopt_long to return 0. */ 363cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project break; 364cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 365cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project case 'y': 366cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project yacc_flag = true; 367cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project break; 368cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 369cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project case 'h': 370cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project usage (EXIT_SUCCESS); 371cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 372cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project case 'V': 373cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project version (); 374cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project exit (EXIT_SUCCESS); 375cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 376cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project case PRINT_LOCALEDIR_OPTION: 377cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project printf ("%s\n", LOCALEDIR); 378cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project exit (EXIT_SUCCESS); 379cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 380cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project case 'g': 381cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* Here, the -g and --graph=FILE options are differentiated. */ 382cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project graph_flag = true; 383cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (optarg) 384cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project spec_graph_file = AS_FILE_NAME (optarg); 385cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project break; 386cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 387cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project case 'v': 388cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project report_flag |= report_states; 389cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project break; 390cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 391cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project case 'S': 392cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project skeleton = AS_FILE_NAME (optarg); 393cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project break; 394cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 395cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project case 'I': 396cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project include = AS_FILE_NAME (optarg); 397cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project break; 398cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 399cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project case 'd': 400cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project /* Here, the -d and --defines options are differentiated. */ 401cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project defines_flag = true; 402cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (optarg) 403cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project spec_defines_file = AS_FILE_NAME (optarg); 404cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project break; 405cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 406cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project case 'l': 407cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project no_lines_flag = true; 408cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project break; 409cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 410cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project case LOCATIONS_OPTION: 411cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project locations_flag = true; 412cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project break; 413cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 414cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project case 'k': 415cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project token_table_flag = true; 416cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project break; 417cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 418cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project case 'n': 419cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project no_parser_flag = true; 420cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project break; 421cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 422cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project case 't': 423cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project debug_flag = true; 424cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project break; 425cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 426cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project case 'o': 427cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project spec_outfile = AS_FILE_NAME (optarg); 428cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project break; 429cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 430cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project case 'b': 431cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project spec_file_prefix = AS_FILE_NAME (optarg); 432cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project break; 433cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 434cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project case 'p': 435cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project spec_name_prefix = optarg; 436cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project break; 437cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 438cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project case 'r': 439cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project report_argmatch (optarg); 440cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project break; 441cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 442cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project case 'T': 443cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project trace_argmatch (optarg); 444cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project break; 445cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 446cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project default: 447cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project usage (EXIT_FAILURE); 448cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 449cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 450cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (argc - optind != 1) 451cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project { 452cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project if (argc - optind < 1) 453cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project error (0, 0, _("missing operand after `%s'"), argv[argc - 1]); 454cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project else 455cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project error (0, 0, _("extra operand `%s'"), argv[optind + 1]); 456cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project usage (EXIT_FAILURE); 457cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project } 458cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project 459cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project current_file = grammar_file = uniqstr_new (argv[optind]); 460cea198a11f15a2eb071d98491ca9a8bc8cebfbc4The Android Open Source Project} 461