mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-17 16:23:04 +00:00
* 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.
This commit is contained in:
13
ChangeLog
13
ChangeLog
@@ -1,3 +1,16 @@
|
|||||||
|
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>
|
2000-10-02 Akim Demaille <akim@epita.fr>
|
||||||
|
|
||||||
* src/LR0.h: New file.
|
* src/LR0.h: New file.
|
||||||
|
|||||||
@@ -21,6 +21,14 @@
|
|||||||
#ifndef LR0_H_
|
#ifndef LR0_H_
|
||||||
# define LR0_H_
|
# define LR0_H_
|
||||||
|
|
||||||
|
# include "state.h"
|
||||||
|
|
||||||
void generate_states PARAMS ((void));
|
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_ */
|
#endif /* !LR0_H_ */
|
||||||
|
|||||||
@@ -25,7 +25,6 @@
|
|||||||
#include "closure.h"
|
#include "closure.h"
|
||||||
|
|
||||||
extern short **derives;
|
extern short **derives;
|
||||||
extern char **tags;
|
|
||||||
|
|
||||||
extern void RTC PARAMS ((unsigned *, int));
|
extern void RTC PARAMS ((unsigned *, int));
|
||||||
|
|
||||||
|
|||||||
@@ -26,9 +26,8 @@
|
|||||||
#include "state.h"
|
#include "state.h"
|
||||||
#include "lalr.h"
|
#include "lalr.h"
|
||||||
#include "conflicts.h"
|
#include "conflicts.h"
|
||||||
|
#include "reader.h"
|
||||||
extern char **tags;
|
#include "LR0.h"
|
||||||
extern int fixed_outfiles;
|
|
||||||
|
|
||||||
int any_conflicts = 0;
|
int any_conflicts = 0;
|
||||||
errs **err_table;
|
errs **err_table;
|
||||||
|
|||||||
@@ -31,7 +31,6 @@
|
|||||||
#include "derives.h"
|
#include "derives.h"
|
||||||
|
|
||||||
#if DEBUG
|
#if DEBUG
|
||||||
extern char **tags;
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
print_derives (void)
|
print_derives (void)
|
||||||
|
|||||||
@@ -74,8 +74,6 @@ static char *tmpdefsfile;
|
|||||||
extern char *mktemp (); /* So the compiler won't complain */
|
extern char *mktemp (); /* So the compiler won't complain */
|
||||||
extern char *getenv ();
|
extern char *getenv ();
|
||||||
|
|
||||||
int fixed_outfiles = 0;
|
|
||||||
|
|
||||||
extern char *program_name;
|
extern char *program_name;
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -34,14 +34,11 @@ int noparserflag = 0;
|
|||||||
int rawtoknumflag = 0;
|
int rawtoknumflag = 0;
|
||||||
int toknumflag = 0;
|
int toknumflag = 0;
|
||||||
int verboseflag = 0;
|
int verboseflag = 0;
|
||||||
|
int statisticsflag = 0;
|
||||||
extern int fixed_outfiles;/* for -y */
|
int fixed_outfiles = 0;/* for -y */
|
||||||
|
|
||||||
extern char *program_name;
|
extern char *program_name;
|
||||||
|
|
||||||
extern void warns PARAMS((char *, char *)); /* main.c */
|
|
||||||
extern void getargs PARAMS((int argc, char *[]));
|
|
||||||
|
|
||||||
static struct option longopts[] =
|
static struct option longopts[] =
|
||||||
{
|
{
|
||||||
{"debug", 0, &debugflag, 1},
|
{"debug", 0, &debugflag, 1},
|
||||||
@@ -59,6 +56,7 @@ static struct option longopts[] =
|
|||||||
{"verbose", 0, &verboseflag, 1},
|
{"verbose", 0, &verboseflag, 1},
|
||||||
{"version", 0, 0, 'V'},
|
{"version", 0, 0, 'V'},
|
||||||
{"yacc", 0, &fixed_outfiles, 1},
|
{"yacc", 0, &fixed_outfiles, 1},
|
||||||
|
{"statistics", 0, &statisticsflag, 1},
|
||||||
{0, 0, 0, 0}
|
{0, 0, 0, 0}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -18,6 +18,9 @@
|
|||||||
Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||||
02111-1307, USA. */
|
02111-1307, USA. */
|
||||||
|
|
||||||
|
#ifndef GETARGS_H_
|
||||||
|
# define GETARGS_H_
|
||||||
|
|
||||||
/* flags set by % directives */
|
/* flags set by % directives */
|
||||||
extern char *spec_file_prefix; /* for -b */
|
extern char *spec_file_prefix; /* for -b */
|
||||||
extern char *spec_name_prefix; /* for -p */
|
extern char *spec_name_prefix; /* for -p */
|
||||||
@@ -30,5 +33,9 @@ extern int noparserflag; /* for -n */
|
|||||||
extern int rawtoknumflag; /* for -r */
|
extern int rawtoknumflag; /* for -r */
|
||||||
extern int toknumflag; /* for -k */
|
extern int toknumflag; /* for -k */
|
||||||
extern int verboseflag; /* for -v */
|
extern int verboseflag; /* for -v */
|
||||||
|
extern int statisticsflag;
|
||||||
|
extern int fixed_outfiles; /* for -y */
|
||||||
|
|
||||||
void getargs PARAMS ((int argc, char *argv[]));
|
void getargs PARAMS ((int argc, char *argv[]));
|
||||||
|
|
||||||
|
#endif /* !GETARGS_H_ */
|
||||||
|
|||||||
128
src/gram.h
128
src/gram.h
@@ -1,79 +1,82 @@
|
|||||||
/* Data definitions for internal representation of bison's input,
|
/* Data definitions for internal representation of bison's input,
|
||||||
Copyright (C) 1984, 1986, 1989, 1992 Free Software Foundation, Inc.
|
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
|
Bison is free software; you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
the Free Software Foundation; either version 2, or (at your option)
|
the Free Software Foundation; either version 2, or (at your option)
|
||||||
any later version.
|
any later version.
|
||||||
|
|
||||||
Bison is distributed in the hope that it will be useful,
|
Bison is distributed in the hope that it will be useful,
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
GNU General Public License for more details.
|
GNU General Public License for more details.
|
||||||
|
|
||||||
You should have received a copy of the GNU General Public License
|
You should have received a copy of the GNU General Public License
|
||||||
along with Bison; see the file COPYING. If not, write to
|
along with Bison; see the file COPYING. If not, write to
|
||||||
the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||||
Boston, MA 02111-1307, USA. */
|
Boston, MA 02111-1307, USA. */
|
||||||
|
|
||||||
|
#ifndef GRAM_H_
|
||||||
|
# define GRAM_H_
|
||||||
|
|
||||||
/* representation of the grammar rules:
|
/* representation of the grammar rules:
|
||||||
|
|
||||||
ntokens is the number of tokens, and nvars is the number of variables
|
ntokens is the number of tokens, and nvars is the number of
|
||||||
(nonterminals). nsyms is the total number, ntokens + nvars.
|
variables (nonterminals). nsyms is the total number, ntokens +
|
||||||
|
nvars.
|
||||||
|
|
||||||
(the true number of token values assigned is ntokens
|
(the true number of token values assigned is ntokens reduced by one
|
||||||
reduced by one for each alias declaration)
|
for each alias declaration)
|
||||||
|
|
||||||
Each symbol (either token or variable) receives a symbol number.
|
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
|
Numbers 0 to ntokens-1 are for tokens, and ntokens to nsyms-1 are
|
||||||
variables. Symbol number zero is the end-of-input token. This token
|
for variables. Symbol number zero is the end-of-input token. This
|
||||||
is counted in ntokens.
|
token is counted in ntokens.
|
||||||
|
|
||||||
The rules receive rule numbers 1 to nrules in the order they are written.
|
The rules receive rule numbers 1 to nrules in the order they are
|
||||||
Actions and guards are accessed via the rule number.
|
written. Actions and guards are accessed via the rule number.
|
||||||
|
|
||||||
The rules themselves are described by three arrays: rrhs, rlhs and
|
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.
|
ritem. rlhs[R] is the symbol number of the left hand side of rule
|
||||||
The right hand side is stored as symbol numbers in a portion of
|
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
|
ritem. rrhs[R] contains the index in ritem of the beginning of the
|
||||||
portion for rule R.
|
portion for rule R.
|
||||||
|
|
||||||
If rlhs[R] is -1, the rule has been thrown out by reduce.c
|
If rlhs[R] is -1, the rule has been thrown out by reduce.c and
|
||||||
and should be ignored.
|
should be ignored.
|
||||||
|
|
||||||
The length of the portion is one greater
|
The length of the portion is one greater than the number of symbols
|
||||||
than the number of symbols in the rule's right hand side.
|
in the rule's right hand side. The last element in the portion
|
||||||
The last element in the portion contains minus R, which
|
contains minus R, which identifies it as the end of a portion and
|
||||||
identifies it as the end of a portion and says which rule it is for.
|
says which rule it is for.
|
||||||
|
|
||||||
The portions of ritem come in order of increasing rule number and are
|
The portions of ritem come in order of increasing rule number and
|
||||||
followed by an element which is zero to mark the end. nitems is the
|
are followed by an element which is zero to mark the end. nitems
|
||||||
total length of ritem, not counting the final zero. Each element of
|
is the total length of ritem, not counting the final zero. Each
|
||||||
ritem is called an "item" and its index in ritem is an item number.
|
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
|
Item numbers are used in the finite state machine to represent
|
||||||
places that parsing can get to.
|
places that parsing can get to.
|
||||||
|
|
||||||
Precedence levels are recorded in the vectors sprec and rprec.
|
Precedence levels are recorded in the vectors sprec and rprec.
|
||||||
sprec records the precedence level of each symbol,
|
sprec records the precedence level of each symbol, rprec the
|
||||||
rprec the precedence level of each rule.
|
precedence level of each rule. rprecsym is the symbol-number of
|
||||||
rprecsym is the symbol-number of the symbol in %prec for this rule (if any).
|
the symbol in %prec for this rule (if any).
|
||||||
|
|
||||||
Precedence levels are assigned in increasing order starting with 1 so
|
Precedence levels are assigned in increasing order starting with 1
|
||||||
that numerically higher precedence values mean tighter binding as they
|
so that numerically higher precedence values mean tighter binding
|
||||||
ought to. Zero as a symbol or rule's precedence means none is
|
as they ought to. Zero as a symbol or rule's precedence means none
|
||||||
assigned.
|
is assigned.
|
||||||
|
|
||||||
Associativities are recorded similarly in rassoc and sassoc. */
|
Associativities are recorded similarly in rassoc and sassoc. */
|
||||||
|
|
||||||
|
|
||||||
#define ISTOKEN(s) ((s) < ntokens)
|
#define ISTOKEN(s) ((s) < ntokens)
|
||||||
#define ISVAR(s) ((s) >= ntokens)
|
#define ISVAR(s) ((s) >= ntokens)
|
||||||
|
|
||||||
|
|
||||||
extern int nitems;
|
extern int nitems;
|
||||||
extern int nrules;
|
extern int nrules;
|
||||||
extern int nsyms;
|
extern int nsyms;
|
||||||
@@ -99,28 +102,29 @@ extern int start_symbol;
|
|||||||
#define LEFT_ASSOC 2
|
#define LEFT_ASSOC 2
|
||||||
#define NON_ASSOC 3
|
#define NON_ASSOC 3
|
||||||
|
|
||||||
/* token translation table:
|
/* token translation table: indexed by a token number as returned by
|
||||||
indexed by a token number as returned by the user's yylex routine,
|
the user's yylex routine, it yields the internal token number used
|
||||||
it yields the internal token number used by the parser and throughout bison.
|
by the parser and throughout bison. If translations is zero, the
|
||||||
If translations is zero, the translation table is not used because
|
translation table is not used because the two kinds of token
|
||||||
the two kinds of token numbers are the same.
|
numbers are the same. (It is noted in reader.c that "Nowadays
|
||||||
(It is noted in reader.c that "Nowadays translations is always set to 1...")
|
translations is always set to 1...") */
|
||||||
*/
|
|
||||||
|
|
||||||
extern short *token_translations;
|
extern short *token_translations;
|
||||||
extern int translations;
|
extern int translations;
|
||||||
extern int max_user_token_number;
|
extern int max_user_token_number;
|
||||||
|
|
||||||
/* semantic_parser is nonzero if the input file says to use the hairy parser
|
/* SEMANTIC_PARSER is nonzero if the input file says to use the hairy
|
||||||
that provides for semantic error recovery. If it is zero, the yacc-compatible
|
parser that provides for semantic error recovery. If it is zero,
|
||||||
simplified parser is used. */
|
the yacc-compatible simplified parser is used. */
|
||||||
|
|
||||||
extern int semantic_parser;
|
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;
|
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;
|
extern int error_token_number;
|
||||||
|
#endif /* !GRAM_H_ */
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ Boston, MA 02111-1307, USA. */
|
|||||||
|
|
||||||
#include "system.h"
|
#include "system.h"
|
||||||
#include "types.h"
|
#include "types.h"
|
||||||
#include "state.h"
|
#include "LR0.h"
|
||||||
#include "alloc.h"
|
#include "alloc.h"
|
||||||
#include "gram.h"
|
#include "gram.h"
|
||||||
#include "complain.h"
|
#include "complain.h"
|
||||||
|
|||||||
@@ -26,10 +26,10 @@
|
|||||||
#include "lex.h"
|
#include "lex.h"
|
||||||
#include "alloc.h"
|
#include "alloc.h"
|
||||||
#include "complain.h"
|
#include "complain.h"
|
||||||
|
#include "gram.h"
|
||||||
|
|
||||||
/*spec_outfile is declared in files.h, for -o */
|
/*spec_outfile is declared in files.h, for -o */
|
||||||
|
|
||||||
extern int translations;
|
|
||||||
|
|
||||||
/* functions from main.c */
|
/* functions from main.c */
|
||||||
extern char *printable_version PARAMS ((int));
|
extern char *printable_version PARAMS ((int));
|
||||||
|
|||||||
@@ -95,7 +95,7 @@
|
|||||||
#include "alloc.h"
|
#include "alloc.h"
|
||||||
#include "files.h"
|
#include "files.h"
|
||||||
#include "gram.h"
|
#include "gram.h"
|
||||||
#include "state.h"
|
#include "LR0.h"
|
||||||
#include "complain.h"
|
#include "complain.h"
|
||||||
#include "output.h"
|
#include "output.h"
|
||||||
#include "lalr.h"
|
#include "lalr.h"
|
||||||
@@ -104,9 +104,6 @@
|
|||||||
|
|
||||||
extern void berror PARAMS((const char *));
|
extern void berror PARAMS((const char *));
|
||||||
|
|
||||||
extern char **tags;
|
|
||||||
extern short *user_toknums;
|
|
||||||
extern int final_state;
|
|
||||||
|
|
||||||
|
|
||||||
static int nvectors;
|
static int nvectors;
|
||||||
|
|||||||
@@ -23,14 +23,13 @@
|
|||||||
#include "alloc.h"
|
#include "alloc.h"
|
||||||
#include "files.h"
|
#include "files.h"
|
||||||
#include "gram.h"
|
#include "gram.h"
|
||||||
#include "state.h"
|
#include "LR0.h"
|
||||||
#include "lalr.h"
|
#include "lalr.h"
|
||||||
#include "conflicts.h"
|
#include "conflicts.h"
|
||||||
#include "getargs.h"
|
#include "getargs.h"
|
||||||
#include "state.h"
|
#include "state.h"
|
||||||
|
#include "reader.h"
|
||||||
|
|
||||||
extern char **tags;
|
|
||||||
extern int final_state;
|
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
static void
|
static void
|
||||||
|
|||||||
27
src/reader.c
27
src/reader.c
@@ -29,6 +29,17 @@
|
|||||||
#include "gram.h"
|
#include "gram.h"
|
||||||
#include "complain.h"
|
#include "complain.h"
|
||||||
#include "output.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 "\
|
#define LTYPESTR "\
|
||||||
\n\
|
\n\
|
||||||
@@ -55,16 +66,6 @@ typedef\n\
|
|||||||
/* Number of slots allocated (but not necessarily used yet) in `rline' */
|
/* Number of slots allocated (but not necessarily used yet) in `rline' */
|
||||||
static int rline_allocated;
|
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
|
typedef struct symbol_list
|
||||||
{
|
{
|
||||||
struct symbol_list *next;
|
struct symbol_list *next;
|
||||||
@@ -73,10 +74,6 @@ typedef struct symbol_list
|
|||||||
}
|
}
|
||||||
symbol_list;
|
symbol_list;
|
||||||
|
|
||||||
|
|
||||||
extern void reader PARAMS ((void));
|
|
||||||
extern void reader_output_yylsp PARAMS ((FILE *));
|
|
||||||
|
|
||||||
int lineno;
|
int lineno;
|
||||||
char **tags;
|
char **tags;
|
||||||
short *user_toknums;
|
short *user_toknums;
|
||||||
@@ -1667,7 +1664,7 @@ output_token_defines (FILE *file)
|
|||||||
|
|
||||||
/*------------------------------------------------------------------.
|
/*------------------------------------------------------------------.
|
||||||
| Assign symbol numbers, and write definition of token names into |
|
| 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. |
|
| of symbols. |
|
||||||
`------------------------------------------------------------------*/
|
`------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
|||||||
10
src/reduce.c
10
src/reduce.c
@@ -32,10 +32,8 @@
|
|||||||
#include "alloc.h"
|
#include "alloc.h"
|
||||||
#include "complain.h"
|
#include "complain.h"
|
||||||
#include "reduce.h"
|
#include "reduce.h"
|
||||||
|
#include "reader.h"
|
||||||
extern char **tags; /* reader.c */
|
#include "getargs.h"
|
||||||
static int statisticsflag; /* XXXXXXX */
|
|
||||||
extern int fixed_outfiles;
|
|
||||||
|
|
||||||
typedef unsigned *BSet;
|
typedef unsigned *BSet;
|
||||||
typedef short *rule;
|
typedef short *rule;
|
||||||
@@ -545,8 +543,8 @@ reduce_grammar (void)
|
|||||||
dump_grammar ();
|
dump_grammar ();
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
statisticsflag = FALSE; /* someday getopts should handle this */
|
|
||||||
if (statisticsflag == TRUE)
|
if (statisticsflag)
|
||||||
fprintf (stderr, _("reduced %s defines %d terminal%s, %d nonterminal%s\
|
fprintf (stderr, _("reduced %s defines %d terminal%s, %d nonterminal%s\
|
||||||
, and %d production%s.\n"),
|
, and %d production%s.\n"),
|
||||||
infile,
|
infile,
|
||||||
|
|||||||
@@ -130,9 +130,4 @@ typedef struct reductions
|
|||||||
}
|
}
|
||||||
reductions;
|
reductions;
|
||||||
|
|
||||||
extern int nstates;
|
|
||||||
extern core *first_state;
|
|
||||||
extern shifts *first_shift;
|
|
||||||
extern reductions *first_reduction;
|
|
||||||
|
|
||||||
#endif /* !STATE_H_ */
|
#endif /* !STATE_H_ */
|
||||||
|
|||||||
Reference in New Issue
Block a user