(root)/
bison-3.8.2/
src/
getargs.h
       1  /* Parse command line arguments for bison.
       2  
       3     Copyright (C) 1984, 1986, 1989, 1992, 2000-2015, 2018-2021 Free
       4     Software Foundation, Inc.
       5  
       6     This file is part of Bison, the GNU Compiler Compiler.
       7  
       8     This program is free software: you can redistribute it and/or modify
       9     it under the terms of the GNU General Public License as published by
      10     the Free Software Foundation, either version 3 of the License, or
      11     (at your option) any later version.
      12  
      13     This program is distributed in the hope that it will be useful,
      14     but WITHOUT ANY WARRANTY; without even the implied warranty of
      15     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
      16     GNU General Public License for more details.
      17  
      18     You should have received a copy of the GNU General Public License
      19     along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
      20  
      21  #ifndef GETARGS_H_
      22  # define GETARGS_H_
      23  
      24  # include "location.h"
      25  
      26  enum { command_line_prio, grammar_prio, default_prio };
      27  
      28  /* flags set by % directives */
      29  
      30  /* for -S */
      31  extern char const *skeleton;
      32  extern int skeleton_prio;
      33  
      34  /* for -I */
      35  extern char const *include;
      36  
      37  extern bool header_flag;                /* for -d/-H */
      38  extern bool graph_flag;                 /* for -g */
      39  extern bool html_flag;                  /* for --html */
      40  extern bool xml_flag;                   /* for -x */
      41  extern bool no_lines_flag;              /* for -l */
      42  extern bool token_table_flag;           /* for -k */
      43  extern location yacc_loc;               /* for -y */
      44  extern bool update_flag;                /* for -u */
      45  extern bool color_debug;                /* --color=debug. */
      46  /* GLR_PARSER is true if the input file says to use the GLR
      47     (Generalized LR) parser, and to output some additional information
      48     used by the GLR algorithm.  */
      49  
      50  extern bool glr_parser;
      51  
      52  /* NONDETERMINISTIC_PARSER is true iff conflicts are accepted.  This
      53     is used by the GLR parser, and might be used in BackTracking
      54     parsers too.  */
      55  
      56  extern bool nondeterministic_parser;
      57  
      58  
      59  /* --language.  */
      60  struct bison_language
      61  {
      62    char language[sizeof "Java"];
      63    char skeleton[sizeof "java-skel.m4"];
      64    char src_extension[sizeof ".java"];
      65    char header_extension[sizeof ".java"];
      66    bool add_tab;
      67  };
      68  
      69  extern int language_prio;
      70  extern struct bison_language const *language;
      71  
      72  /*-----------.
      73  | --report.  |
      74  `-----------*/
      75  
      76  enum report
      77    {
      78      report_none             = 0,
      79      report_states           = 1 << 0,
      80      report_itemsets         = 1 << 1,
      81      report_lookaheads       = 1 << 2,
      82      report_solved_conflicts = 1 << 3,
      83      report_cex              = 1 << 4,
      84      report_all              = ~0
      85    };
      86  /** What appears in the *.output file.  */
      87  extern int report_flag;
      88  
      89  /*----------.
      90  | --trace.  |
      91  `----------*/
      92  enum trace
      93    {
      94      trace_none      = 0,       /**< No traces. */
      95      trace_scan      = 1 << 0,  /**< Grammar scanner traces. */
      96      trace_parse     = 1 << 1,  /**< Grammar parser traces. */
      97      trace_resource  = 1 << 2,  /**< Memory allocation. */
      98      trace_sets      = 1 << 3,  /**< Grammar sets: firsts, nullable etc. */
      99      trace_bitsets   = 1 << 4,  /**< Use of bitsets. */
     100      trace_tools     = 1 << 5,  /**< m4 invocation. */
     101      trace_automaton = 1 << 6,  /**< Construction of the automaton. */
     102      trace_grammar   = 1 << 7,  /**< Reading, reducing the grammar. */
     103      trace_time      = 1 << 8,  /**< Time consumption. */
     104      trace_skeleton  = 1 << 9,  /**< Skeleton postprocessing. */
     105      trace_m4_early  = 1 << 10, /**< M4 early traces. */
     106      trace_m4        = 1 << 11, /**< M4 traces. */
     107      trace_muscles   = 1 << 12, /**< M4 definitions of the muscles. */
     108      trace_ielr      = 1 << 13, /**< IELR conversion. */
     109      trace_closure   = 1 << 14, /**< Input/output of closure(). */
     110      trace_locations = 1 << 15, /**< Full display of locations. */
     111      trace_cex       = 1 << 16, /**< Counterexample generation */
     112      trace_all       = ~0       /**< All of the above.  */
     113    };
     114  /** What debug items bison displays during its run.  */
     115  extern int trace_flag;
     116  
     117  /*-------------.
     118  | --features.  |
     119  `-------------*/
     120  
     121  enum feature
     122    {
     123      feature_none             = 0,      /**< No additional feature.  */
     124      feature_caret            = 1 << 0, /**< Output errors with carets.  */
     125      feature_fixit            = 1 << 1, /**< Issue instructions to fix the sources.  */
     126      feature_syntax_only      = 1 << 2, /**< Don't generate output.  */
     127      feature_all              = ~0      /**< All above features.  */
     128    };
     129  /** What additional features to use.  */
     130  extern int feature_flag;
     131  
     132  
     133  /** Process the command line arguments.
     134   *
     135   *  \param argc   size of \a argv
     136   *  \param argv   list of arguments.
     137   */
     138  void getargs (int argc, char *argv[]);
     139  
     140  /* Used by parse-gram.y.  */
     141  void language_argmatch (char const *arg, int prio, location loc);
     142  void skeleton_arg (const char *arg, int prio, location loc);
     143  void set_yacc (location loc);
     144  
     145  /** In the string \c s, replace all characters \c from by \c to.  */
     146  void tr (char *s, char from, char to);
     147  
     148  #endif /* !GETARGS_H_ */