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. nritems
- 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.
+ NRITEMS is the total length of RITEM. 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.
#define ITEM_NUMBER_MAX INT_MAX
typedef int item_number_t;
extern item_number_t *ritem;
-extern int nritems;
+extern unsigned int nritems;
/* There is weird relationship between item_number_t and
- token_number_t: we store token_number_t in item_number_t, but in
+ symbol_number_t: we store symbol_number_t in item_number_t, but in
the latter we also store, as negative numbers, the rule numbers.
- Therefore, an token_number_t must be a valid item_number_t, and we
+ Therefore, an symbol_number_t must be a valid item_number_t, and we
sometimes have to perform the converse transformation. */
-#define token_number_as_item_number(Tok) ((item_number_t) (Tok))
-#define item_number_as_token_number(Ite) ((token_number_t) (Ite))
+#define symbol_number_as_item_number(Tok) ((item_number_t) (Tok))
+#define item_number_as_symbol_number(Ite) ((symbol_number_t) (Ite))
-extern token_number_t start_symbol;
+extern symbol_number_t start_symbol;
typedef struct rule_s
/* TOKEN_TRANSLATION -- a 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. */
-extern token_number_t *token_translations;
+extern symbol_number_t *token_translations;
extern int max_user_token_number;
/* Dump the grammar. */
void grammar_dump PARAMS ((FILE *out, const char *title));
+/* Free the packed grammar. */
+void grammar_free PARAMS ((void));
+
#endif /* !GRAM_H_ */