* src/state.h (nstates, final_state, first_state, first_shift)
authorAkim Demaille <akim@epita.fr>
Mon, 2 Oct 2000 08:22:23 +0000 (08:22 +0000)
committerAkim Demaille <akim@epita.fr>
Mon, 2 Oct 2000 08:22:23 +0000 (08:22 +0000)
(first_reduction): Move their exportation from here...
* src/LR0.h: to here.
Adjust dependencies.
* src/getargs.c (statisticsflag): New variable.
Add support for `--statistics'.
Adjust dependencies.
Remove a lot of now useless `extern' statements in most files.

16 files changed:
ChangeLog
src/LR0.h
src/closure.c
src/conflicts.c
src/derives.c
src/files.c
src/getargs.c
src/getargs.h
src/gram.h
src/lalr.c
src/lex.c
src/output.c
src/print.c
src/reader.c
src/reduce.c
src/state.h

index 7181319..9edf818 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,18 @@
 2000-10-02  Akim Demaille  <akim@epita.fr>
 
+       * src/state.h (nstates, final_state, first_state, first_shift)
+       (first_reduction): Move their exportation from here...
+       * src/LR0.h: to here.
+       Adjust dependencies.
+       * src/getargs.c (statisticsflag): New variable.
+       Add support for `--statistics'.
+       Adjust dependencies.
+
+       Remove a lot of now useless `extern' statements in most files.
+
+       
+2000-10-02  Akim Demaille  <akim@epita.fr>
+
        * src/LR0.h: New file.
        Propagate its use.
 
index 3010952..3ad8b68 100644 (file)
--- a/src/LR0.h
+++ b/src/LR0.h
 #ifndef LR0_H_
 # define LR0_H_
 
+# include "state.h"
+
 void generate_states PARAMS ((void));
 
+extern int nstates;
+extern int final_state;
+extern core *first_state;
+extern shifts *first_shift;
+extern reductions *first_reduction;
+
 #endif /* !LR0_H_ */
index 3107325..87ad8c5 100644 (file)
@@ -25,7 +25,6 @@
 #include "closure.h"
 
 extern short **derives;
-extern char **tags;
 
 extern void RTC PARAMS ((unsigned *, int));
 
index 2ade63d..d6c31ef 100644 (file)
@@ -26,9 +26,8 @@
 #include "state.h"
 #include "lalr.h"
 #include "conflicts.h"
-
-extern char **tags;
-extern int fixed_outfiles;
+#include "reader.h"
+#include "LR0.h"
 
 int any_conflicts = 0;
 errs **err_table;
index 5f8637c..3c1d3f6 100644 (file)
@@ -31,7 +31,6 @@
 #include "derives.h"
 
 #if DEBUG
-extern char **tags;
 
 static void
 print_derives (void)
index dc15733..3dc9ca5 100644 (file)
@@ -74,8 +74,6 @@ static char *tmpdefsfile;
 extern char *mktemp ();                /* So the compiler won't complain */
 extern char *getenv ();
 
-int fixed_outfiles = 0;
-
 extern char *program_name;
 \f
 
index de9880b..fd26b78 100644 (file)
@@ -34,14 +34,11 @@ int noparserflag = 0;
 int rawtoknumflag = 0;
 int toknumflag = 0;
 int verboseflag = 0;
-
-extern int fixed_outfiles;/* for -y */
+int statisticsflag = 0;
+int fixed_outfiles = 0;/* for -y */
 
 extern char *program_name;
 
-extern void warns PARAMS((char *, char *));    /* main.c */
-extern void getargs PARAMS((int argc, char *[]));
-
 static struct option longopts[] =
 {
   {"debug", 0, &debugflag, 1},
@@ -59,6 +56,7 @@ static struct option longopts[] =
   {"verbose", 0, &verboseflag, 1},
   {"version", 0, 0, 'V'},
   {"yacc", 0, &fixed_outfiles, 1},
+  {"statistics", 0, &statisticsflag, 1},
   {0, 0, 0, 0}
 };
 
index 3b9e299..ae2b04e 100644 (file)
@@ -18,6 +18,9 @@
    Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
    02111-1307, USA.  */
 
+#ifndef GETARGS_H_
+# define GETARGS_H_
+
 /* flags set by % directives */
 extern char *spec_file_prefix; /* for -b */
 extern char *spec_name_prefix;         /* for -p */
@@ -30,5 +33,9 @@ extern int noparserflag;      /* for -n */
 extern int rawtoknumflag;      /* for -r */
 extern int toknumflag;         /* for -k */
 extern int verboseflag;                /* for -v */
+extern int statisticsflag;
+extern int fixed_outfiles;     /* for -y */
 
 void getargs PARAMS ((int argc, char *argv[]));
+
+#endif /* !GETARGS_H_ */
index a83dd36..1b18232 100644 (file)
@@ -1,79 +1,82 @@
 /* Data definitions for internal representation of bison's input,
    Copyright (C) 1984, 1986, 1989, 1992 Free Software Foundation, Inc.
 
-This file is part of Bison, the GNU Compiler Compiler.
+   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.
+   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.
 
-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.
+   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.
 
-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., 59 Temple Place - Suite 330,
-Boston, MA 02111-1307, USA.  */
+   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., 59 Temple Place - Suite 330,
+   Boston, MA 02111-1307, USA.  */
 
+#ifndef GRAM_H_
+# define GRAM_H_
 
 /* representation of the grammar rules:
 
-ntokens is the number of tokens, and nvars is the number of variables
-(nonterminals).  nsyms is the total number, ntokens + nvars.
+   ntokens is the number of tokens, and nvars is the number of
+   variables (nonterminals).  nsyms is the total number, ntokens +
+   nvars.
 
-       (the true number of token values assigned is ntokens
-       reduced by one for each alias declaration)
+   (the true number of token values assigned is ntokens reduced by one
+   for each alias declaration)
 
-Each symbol (either token or variable) receives a symbol number.
-Numbers 0 to ntokens-1 are for tokens, and ntokens to nsyms-1 are for
-variables.  Symbol number zero is the end-of-input token.  This token
-is counted in ntokens.
+   Each symbol (either token or variable) receives a symbol number.
+   Numbers 0 to ntokens-1 are for tokens, and ntokens to nsyms-1 are
+   for variables.  Symbol number zero is the end-of-input token.  This
+   token is counted in ntokens.
 
-The rules receive rule numbers 1 to nrules in the order they are written.
-Actions and guards are accessed via the rule number.
+   The rules receive rule numbers 1 to nrules in the order they are
+   written.  Actions and guards are accessed via the rule number.
 
-The rules themselves are described by three arrays: rrhs, rlhs and
-ritem.  rlhs[R] is the symbol number of the left hand side of rule R.
-The right hand side is stored as symbol numbers in a portion of
-ritem.  rrhs[R] contains the index in ritem of the beginning of the
-portion for rule R.
+   The rules themselves are described by three arrays: rrhs, rlhs and
+   ritem.  rlhs[R] is the symbol number of the left hand side of rule
+   R.  The right hand side is stored as symbol numbers in a portion of
+   ritem.  rrhs[R] contains the index in ritem of the beginning of the
+   portion for rule R.
 
-If rlhs[R] is -1, the rule has been thrown out by reduce.c
-and should be ignored.
+   If rlhs[R] is -1, the rule has been thrown out by reduce.c and
+   should be ignored.
 
-The length of the portion is one greater
- than the number of symbols in the rule's right hand side.
-The last element in the portion contains minus R, which
-identifies it as the end of a portion and says which rule it is for.
+   The length of the portion is one greater than the number of symbols
+   in the rule's right hand side.  The last element in the portion
+   contains minus R, which identifies it as the end of a portion and
+   says which rule it is for.
 
-The portions of ritem come in order of increasing rule number and are
-followed by an element which is zero to mark the end.  nitems is the
-total length of ritem, not counting the final zero.  Each element of
-ritem is called an "item" and its index in ritem is an item number.
+   The portions of ritem come in order of increasing rule number and
+   are followed by an element which is zero to mark the end.  nitems
+   is the total length of ritem, not counting the final zero.  Each
+   element of ritem is called an "item" and its index in ritem is an
+   item number.
 
-Item numbers are used in the finite state machine to represent
-places that parsing can get to.
+   Item numbers are used in the finite state machine to represent
+   places that parsing can get to.
 
-Precedence levels are recorded in the vectors sprec and rprec.
-sprec records the precedence level of each symbol,
-rprec the precedence level of each rule.
-rprecsym is the symbol-number of the symbol in %prec for this rule (if any).
+   Precedence levels are recorded in the vectors sprec and rprec.
+   sprec records the precedence level of each symbol, rprec the
+   precedence level of each rule.  rprecsym is the symbol-number of
+   the symbol in %prec for this rule (if any).
 
-Precedence levels are assigned in increasing order starting with 1 so
-that numerically higher precedence values mean tighter binding as they
-ought to.  Zero as a symbol or rule's precedence means none is
-assigned.
+   Precedence levels are assigned in increasing order starting with 1
+   so that numerically higher precedence values mean tighter binding
+   as they ought to.  Zero as a symbol or rule's precedence means none
+   is assigned.
 
-Associativities are recorded similarly in rassoc and sassoc.  */
+   Associativities are recorded similarly in rassoc and sassoc.  */
 
 
 #define        ISTOKEN(s)      ((s) < ntokens)
 #define        ISVAR(s)        ((s) >= ntokens)
 
-
 extern int nitems;
 extern int nrules;
 extern int nsyms;
@@ -99,28 +102,29 @@ extern int start_symbol;
 #define LEFT_ASSOC 2
 #define NON_ASSOC 3
 
-/* token translation table:
-indexed by a token number as returned by the user's yylex routine,
-it yields the internal token number used by the parser and throughout bison.
-If translations is zero, the translation table is not used because
-the two kinds of token numbers are the same.  
-(It is noted in reader.c that "Nowadays translations is always set to 1...")
-*/
+/* token translation table: indexed by a token number as returned by
+   the user's yylex routine, it yields the internal token number used
+   by the parser and throughout bison.  If translations is zero, the
+   translation table is not used because the two kinds of token
+   numbers are the same.  (It is noted in reader.c that "Nowadays
+   translations is always set to 1...") */
 
 extern short *token_translations;
 extern int translations;
 extern int max_user_token_number;
 
-/* semantic_parser is nonzero if the input file says to use the hairy parser
-that provides for semantic error recovery.  If it is zero, the yacc-compatible
-simplified parser is used.  */
+/* SEMANTIC_PARSER is nonzero if the input file says to use the hairy
+   parser that provides for semantic error recovery.  If it is zero,
+   the yacc-compatible simplified parser is used.  */
 
 extern int semantic_parser;
 
-/* pure_parser is nonzero if should generate a parser that is all pure and reentrant. */
+/* PURE_PARSER is nonzero if should generate a parser that is all pure
+   and reentrant.  */
 
 extern int pure_parser;
 
-/* error_token_number is the token number of the error token.  */
+/* ERROR_TOKEN_NUMBER is the token number of the error token.  */
 
 extern int error_token_number;
+#endif /* !GRAM_H_ */
index 8e83de9..742ff60 100644 (file)
@@ -25,7 +25,7 @@ Boston, MA 02111-1307, USA.  */
 
 #include "system.h"
 #include "types.h"
-#include "state.h"
+#include "LR0.h"
 #include "alloc.h"
 #include "gram.h"
 #include "complain.h"
index a10c872..27df7f1 100644 (file)
--- a/src/lex.c
+++ b/src/lex.c
 #include "lex.h"
 #include "alloc.h"
 #include "complain.h"
+#include "gram.h"
 
 /*spec_outfile is declared in files.h, for -o */
 
-extern int translations;
 
 /* functions from main.c */
 extern char *printable_version PARAMS ((int));
index 54955b6..214300d 100644 (file)
@@ -95,7 +95,7 @@
 #include "alloc.h"
 #include "files.h"
 #include "gram.h"
-#include "state.h"
+#include "LR0.h"
 #include "complain.h"
 #include "output.h"
 #include "lalr.h"
 
 extern void berror PARAMS((const char *));
 
-extern char **tags;
-extern short *user_toknums;
-extern int final_state;
 
 
 static int nvectors;
index bf3fce8..9a84853 100644 (file)
 #include "alloc.h"
 #include "files.h"
 #include "gram.h"
-#include "state.h"
+#include "LR0.h"
 #include "lalr.h"
 #include "conflicts.h"
 #include "getargs.h"
 #include "state.h"
+#include "reader.h"
 
-extern char **tags;
-extern int final_state;
 
 #if 0
 static void
index cb297c4..c89313e 100644 (file)
 #include "gram.h"
 #include "complain.h"
 #include "output.h"
+#include "reader.h"
+
+extern bucket *symval;
+extern int numval;
+extern int expected_conflicts;
+extern char *token_buffer;
+extern int maxtoken;
+
+extern void tabinit PARAMS ((void));
+extern void free_symtab PARAMS ((void));
+extern char *printable_version PARAMS ((int));
 
 #define        LTYPESTR        "\
 \n\
@@ -55,16 +66,6 @@ typedef\n\
 /* Number of slots allocated (but not necessarily used yet) in `rline'  */
 static int rline_allocated;
 
-extern bucket *symval;
-extern int numval;
-extern int expected_conflicts;
-extern char *token_buffer;
-extern int maxtoken;
-
-extern void tabinit PARAMS ((void));
-extern void free_symtab PARAMS ((void));
-extern char *printable_version PARAMS ((int));
-
 typedef struct symbol_list
 {
   struct symbol_list *next;
@@ -73,10 +74,6 @@ typedef struct symbol_list
 }
 symbol_list;
 
-
-extern void reader PARAMS ((void));
-extern void reader_output_yylsp PARAMS ((FILE *));
-
 int lineno;
 char **tags;
 short *user_toknums;
@@ -1667,7 +1664,7 @@ output_token_defines (FILE *file)
 
 /*------------------------------------------------------------------.
 | Assign symbol numbers, and write definition of token names into   |
-| fdefines.  Set up vectors tags and sprec of names and precedences |
+| FDEFINES.  Set up vectors TAGS and SPREC of names and precedences |
 | of symbols.                                                       |
 `------------------------------------------------------------------*/
 
index d160f9d..8175f29 100644 (file)
 #include "alloc.h"
 #include "complain.h"
 #include "reduce.h"
-
-extern char **tags;            /* reader.c */
-static int statisticsflag;     /* XXXXXXX */
-extern int fixed_outfiles;
+#include "reader.h"
+#include "getargs.h"
 
 typedef unsigned *BSet;
 typedef short *rule;
@@ -545,8 +543,8 @@ reduce_grammar (void)
       dump_grammar ();
     }
 #endif
-  statisticsflag = FALSE;      /* someday getopts should handle this */
-  if (statisticsflag == TRUE)
+
+  if (statisticsflag)
     fprintf (stderr, _("reduced %s defines %d terminal%s, %d nonterminal%s\
 , and %d production%s.\n"),
             infile,
index 43e6809..615c7d5 100644 (file)
@@ -130,9 +130,4 @@ typedef struct reductions
 }
 reductions;
 
-extern int nstates;
-extern core *first_state;
-extern shifts *first_shift;
-extern reductions *first_reduction;
-
 #endif /* !STATE_H_ */