+2002-04-07 Akim Demaille <akim@epita.fr>
+
+ * src/gram.c (nitems, nrules, nsyms, ntokens, nvars, nritems)
+ (start_symbol, max_user_token_number, semantic_parser)
+ (error_token_number): Initialize.
+ * src/reader.c (grammar, start_flag, startval, typed, lastprec):
+ Initialize.
+ (reader): Don't.
+ (errtoken, eoftoken, undeftoken, axiom): Extern.
+
2002-04-07 Akim Demaille <akim@epita.fr>
* src/gram.h (rule_s): prec and precsym are now pointers
/* comments for these variables are in gram.h */
-int nitems;
-int nrules;
-int nsyms;
-int ntokens;
-int nvars;
+int nitems = 0;
+int nrules = 0;
+int nsyms = 0;
+int ntokens = 0;
+int nvars = 0;
short *ritem = NULL;
-int nritems;
+int nritems = 0;
rule_t *rules = NULL;
struct bucket **symbols = NULL;
short *token_translations = NULL;
-int start_symbol;
+int start_symbol = 0;
-int max_user_token_number;
+int max_user_token_number = 256;
-int semantic_parser;
+int semantic_parser = 0;
-int pure_parser;
+int pure_parser = 0;
-int error_token_number;
+int error_token_number = 0;
/*--------------------------------------.
} symbol_list;
int lineno;
-static symbol_list *grammar;
-static int start_flag;
-static bucket *startval;
+static symbol_list *grammar = NULL;
+static int start_flag = 0;
+static bucket *startval = NULL;
/* Nonzero if components of semantic values are used, implying
they must be unions. */
static int value_components_used;
/* Nonzero if %union has been seen. */
-static int typed;
+static int typed = 0;
/* Incremented for each %left, %right or %nonassoc seen */
-static int lastprec;
+static int lastprec = 0;
-static bucket *errtoken = NULL;
-static bucket *undeftoken = NULL;
-static bucket *eoftoken = NULL;
-static bucket *axiom = NULL;
+bucket *errtoken = NULL;
+bucket *undeftoken = NULL;
+bucket *eoftoken = NULL;
+bucket *axiom = NULL;
static symbol_list *
symbol_list_new (bucket *sym)
void
reader (void)
{
- start_flag = 0;
- startval = NULL; /* start symbol not specified yet. */
-
- nsyms = 0;
- nvars = 0;
- nrules = 0;
- nitems = 0;
-
- typed = 0;
- lastprec = 0;
-
- semantic_parser = 0;
- pure_parser = 0;
-
- grammar = NULL;
-
lex_init ();
lineno = 1;
#ifndef READER_H_
# define READER_H_
+#include "symtab.h"
+
/* Read in the grammar specification and record it in the format
described in gram.h. All guards are copied into the FGUARD file
and all actions into FACTION, in each case forming the body of a C
extern int lineno;
+extern bucket *errtoken;
+extern bucket *undeftoken;
+extern bucket *eoftoken;
+extern bucket *axiom;
+
#endif /* !READER_H_ */