/[bison]/bison/src/gram.h
ViewVC logotype

Diff of /bison/src/gram.h

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.41 by hilfinger, Fri Jun 28 02:26:43 2002 UTC revision 1.42 by akim, Sun Jun 30 17:31:19 2002 UTC
# Line 107  Line 107 
107  # define ISTOKEN(s)     ((s) < ntokens)  # define ISTOKEN(s)     ((s) < ntokens)
108  # define ISVAR(s)       ((s) >= ntokens)  # define ISVAR(s)       ((s) >= ntokens)
109    
 extern int nrules;  
110  extern int nsyms;  extern int nsyms;
111  extern int ntokens;  extern int ntokens;
112  extern int nvars;  extern int nvars;
113    
 # define ITEM_NUMBER_MAX INT_MAX  
114  typedef int item_number_t;  typedef int item_number_t;
115    # define ITEM_NUMBER_MAX ((item_number_t) INT_MAX)
116  extern item_number_t *ritem;  extern item_number_t *ritem;
117  extern unsigned int nritems;  extern unsigned int nritems;
118    
119  /* There is weird relationship between item_number_t and  /* There is weird relationship between OT1H item_number_t and OTOH
120     symbol_number_t: we store symbol_number_t in item_number_t, but in     symbol_number_t and rule_number_t: we store the latter in
121     the latter we also store, as negative numbers, the rule numbers.     item_number_t.  symbol_number_t are stored as are, while
122       the negation of rule_number_t are stored.
123    
124     Therefore, an symbol_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
125     sometimes have to perform the converse transformation.  */     sometimes have to perform the converse transformation.  */
# Line 128  extern unsigned int nritems; Line 128  extern unsigned int nritems;
128    
129  extern symbol_number_t start_symbol;  extern symbol_number_t start_symbol;
130    
131    /* Rules numbers. */
132    typedef short rule_number_t;
133    # define RULE_NUMBER_MAX ((rule_number_t) SHRT_MAX)
134    extern rule_number_t nrules;
135    # define int_of_rule_number(RNum) ((int) (RNum))
136    # define item_number_of_rule_number(RNum) ((item_number_t) (- RNum))
137    # define rule_number_of_item_number(INum) ((rule_number_t) (- INum))
138    
139    
140    /*--------.
141    | Rules.  |
142    `--------*/
143    
144  typedef struct rule_s  typedef struct rule_s
145  {  {
146    /* The number of the rule in the source.  It is usually the index in    /* The number of the rule in the source.  It is usually the index in
147       RULES too, except if there are useless rules.  */       RULES too, except if there are useless rules.  */
148    short user_number;    rule_number_t user_number;
149    
150    /* The index in RULES.  Usually the rule number in the source,    /* The index in RULES.  Usually the rule number in the source,
151       except if some rules are useless.  */       except if some rules are useless.  */
152    short number;    rule_number_t number;
153    
154    symbol_t *lhs;    symbol_t *lhs;
155    item_number_t *rhs;    item_number_t *rhs;
# Line 199  size_t ritem_longest_rhs PARAMS ((void)) Line 211  size_t ritem_longest_rhs PARAMS ((void))
211  /* Print the grammar's rules numbers from BEGIN (inclusive) to END  /* Print the grammar's rules numbers from BEGIN (inclusive) to END
212     (exclusive) on OUT under TITLE.  */     (exclusive) on OUT under TITLE.  */
213  void grammar_rules_partial_print PARAMS ((FILE *out, const char *title,  void grammar_rules_partial_print PARAMS ((FILE *out, const char *title,
214                                            int begin, int end));                                            rule_number_t begin,
215                                              rule_number_t end));
216    
217  /* Print the grammar's rules on OUT.  */  /* Print the grammar's rules on OUT.  */
218  void grammar_rules_print PARAMS ((FILE *out));  void grammar_rules_print PARAMS ((FILE *out));

Legend:
Removed from v.1.41  
changed lines
  Added in v.1.42

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26