mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-09 20:33:03 +00:00
(item_number): Renamed from item_number_t.
(rule_number): Renamed from rule_number_t. (struct rule_s): Remove the "rule_s" part; not used. (rule): Renamed from rule_t. (rule_filter): Renamed from rule_filter_t. (ITEM_NUMBER_MAX, ITEM_NUMBER_MIN, RULE_NUMBER_MAX): Remove; unused.
This commit is contained in:
85
src/gram.h
85
src/gram.h
@@ -52,7 +52,7 @@
|
||||
The rules themselves are described by several arrays: amongst which
|
||||
RITEM, and RULES.
|
||||
|
||||
RULES is an array of struct rule_s, which members are:
|
||||
RULES is an array of rules, whose members are:
|
||||
|
||||
RULES[R].lhs -- the symbol of the left hand side of rule R.
|
||||
|
||||
@@ -113,105 +113,102 @@ extern int nsyms;
|
||||
extern int ntokens;
|
||||
extern int nvars;
|
||||
|
||||
typedef int item_number_t;
|
||||
# define ITEM_NUMBER_MAX ((item_number_t) INT_MAX)
|
||||
# define ITEM_NUMBER_MIN ((item_number_t) INT_MIN)
|
||||
extern item_number_t *ritem;
|
||||
typedef int item_number;
|
||||
extern item_number *ritem;
|
||||
extern unsigned int nritems;
|
||||
|
||||
/* There is weird relationship between OT1H item_number_t and OTOH
|
||||
symbol_number_t and rule_number_t: we store the latter in
|
||||
item_number_t. symbol_number_t are stored as are, while
|
||||
the negation of (rule_number_t + 1) are stored.
|
||||
/* There is weird relationship between OT1H item_number and OTOH
|
||||
symbol_number and rule_number: we store the latter in
|
||||
item_number. symbol_number values are stored as-is, while
|
||||
the negation of (rule_number + 1) is stored.
|
||||
|
||||
Therefore, an symbol_number_t must be a valid item_number_t, and we
|
||||
Therefore, a symbol_number must be a valid item_number, and we
|
||||
sometimes have to perform the converse transformation. */
|
||||
# define symbol_number_as_item_number(Tok) ((item_number_t) (Tok))
|
||||
# define item_number_as_symbol_number(Ite) ((symbol_number_t) (Ite))
|
||||
# define symbol_number_as_item_number(Tok) ((item_number) (Tok))
|
||||
# define item_number_as_symbol_number(Ite) ((symbol_number) (Ite))
|
||||
|
||||
extern symbol_number_t start_symbol;
|
||||
extern symbol_number start_symbol;
|
||||
|
||||
/* Rules numbers. */
|
||||
typedef short rule_number_t;
|
||||
# define RULE_NUMBER_MAX ((rule_number_t) SHRT_MAX)
|
||||
extern rule_number_t nrules;
|
||||
/* Rule numbers. */
|
||||
typedef short rule_number;
|
||||
extern rule_number nrules;
|
||||
# define int_of_rule_number(RNum) ((int) (RNum))
|
||||
# define rule_number_as_item_number(RNum) ((item_number_t) (- RNum - 1))
|
||||
# define item_number_as_rule_number(INum) ((rule_number_t) (- INum - 1))
|
||||
# define rule_number_as_item_number(RNum) ((item_number) (- RNum - 1))
|
||||
# define item_number_as_rule_number(INum) ((rule_number) (- INum - 1))
|
||||
|
||||
|
||||
/*--------.
|
||||
| Rules. |
|
||||
`--------*/
|
||||
|
||||
typedef struct rule_s
|
||||
typedef struct
|
||||
{
|
||||
/* The number of the rule in the source. It is usually the index in
|
||||
RULES too, except if there are useless rules. */
|
||||
rule_number_t user_number;
|
||||
rule_number user_number;
|
||||
|
||||
/* The index in RULES. Usually the rule number in the source,
|
||||
except if some rules are useless. */
|
||||
rule_number_t number;
|
||||
rule_number number;
|
||||
|
||||
symbol_t *lhs;
|
||||
item_number_t *rhs;
|
||||
symbol *lhs;
|
||||
item_number *rhs;
|
||||
|
||||
/* This symbol provides both the associativity, and the precedence. */
|
||||
symbol_t *prec;
|
||||
symbol *prec;
|
||||
|
||||
short dprec;
|
||||
short merger;
|
||||
|
||||
/* This symbol was attached to the rule via %prec. */
|
||||
symbol_t *precsym;
|
||||
symbol *precsym;
|
||||
|
||||
location_t location;
|
||||
location location;
|
||||
bool useful;
|
||||
|
||||
const char *action;
|
||||
location_t action_location;
|
||||
} rule_t;
|
||||
location action_location;
|
||||
} rule;
|
||||
|
||||
extern struct rule_s *rules;
|
||||
extern rule *rules;
|
||||
|
||||
/* A function that selects a rule. */
|
||||
typedef bool (*rule_filter_t) (rule_t *r);
|
||||
typedef bool (*rule_filter) (rule *);
|
||||
|
||||
/* Return true IFF the rule has a `number' smaller than NRULES. */
|
||||
bool rule_useful_p (rule_t *r);
|
||||
bool rule_useful_p (rule *r);
|
||||
|
||||
/* Return true IFF the rule has a `number' higher than NRULES. */
|
||||
bool rule_useless_p (rule_t *r);
|
||||
bool rule_useless_p (rule *r);
|
||||
|
||||
/* Return true IFF the rule is not flagged as useful *and* is useful.
|
||||
In other words, it was discarded because of conflicts. */
|
||||
bool rule_never_reduced_p (rule_t *r);
|
||||
bool rule_never_reduced_p (rule *r);
|
||||
|
||||
/* Print this RULE's number and lhs on OUT. If a PREVIOUS_LHS was
|
||||
/* Print this rule's number and lhs on OUT. If a PREVIOUS_LHS was
|
||||
already displayed (by a previous call for another rule), avoid
|
||||
useless repetitions. */
|
||||
void rule_lhs_print (rule_t *rule, symbol_t *previous_lhs, FILE *out);
|
||||
void rule_lhs_print (rule *r, symbol *previous_lhs, FILE *out);
|
||||
|
||||
/* Return the length of the RHS. */
|
||||
int rule_rhs_length (rule_t *rule);
|
||||
int rule_rhs_length (rule *r);
|
||||
|
||||
/* Print this RULE's RHS on OUT. */
|
||||
void rule_rhs_print (rule_t *rule, FILE *out);
|
||||
/* Print this rule's RHS on OUT. */
|
||||
void rule_rhs_print (rule *r, FILE *out);
|
||||
|
||||
/* Print this RULE on OUT. */
|
||||
void rule_print (rule_t *rule, FILE *out);
|
||||
/* Print this rule on OUT. */
|
||||
void rule_print (rule *r, FILE *out);
|
||||
|
||||
|
||||
|
||||
|
||||
/* Table of the symbols, indexed by the symbol number. */
|
||||
extern symbol_t **symbols;
|
||||
extern symbol **symbols;
|
||||
|
||||
/* 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 symbol_number_t *token_translations;
|
||||
extern symbol_number *token_translations;
|
||||
extern int max_user_token_number;
|
||||
|
||||
|
||||
@@ -236,7 +233,7 @@ size_t ritem_longest_rhs (void);
|
||||
/* Print the grammar's rules numbers from BEGIN (inclusive) to END
|
||||
(exclusive) on OUT under TITLE. */
|
||||
void grammar_rules_partial_print (FILE *out, const char *title,
|
||||
rule_filter_t filter);
|
||||
rule_filter filter);
|
||||
|
||||
/* Print the grammar's rules on OUT. */
|
||||
void grammar_rules_print (FILE *out);
|
||||
|
||||
Reference in New Issue
Block a user