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

Diff of /bison/src/gram.c

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

revision 1.38 by hilfinger, Fri Jun 28 02:26:43 2002 UTC revision 1.39 by akim, Sun Jun 30 17:31:19 2002 UTC
# Line 32  item_number_t *ritem = NULL; Line 32  item_number_t *ritem = NULL;
32  unsigned int nritems = 0;  unsigned int nritems = 0;
33    
34  rule_t *rules = NULL;  rule_t *rules = NULL;
35  int nrules = 0;  rule_number_t nrules = 0;
36    
37  symbol_t **symbols = NULL;  symbol_t **symbols = NULL;
38  int nsyms = 0;  int nsyms = 0;
# Line 121  size_t Line 121  size_t
121  ritem_longest_rhs (void)  ritem_longest_rhs (void)
122  {  {
123    int max = 0;    int max = 0;
124    int i;    rule_number_t r;
125    
126    for (i = 1; i < nrules + 1; ++i)    for (r = 1; r < nrules + 1; ++r)
127      {      {
128        int length = rule_rhs_length (&rules[i]);        int length = rule_rhs_length (&rules[r]);
129        if (length > max)        if (length > max)
130          max = length;          max = length;
131      }      }
# Line 148  blanks_print (unsigned n, FILE *out) Line 148  blanks_print (unsigned n, FILE *out)
148    
149  void  void
150  grammar_rules_partial_print (FILE *out, const char *title,  grammar_rules_partial_print (FILE *out, const char *title,
151                               int begin, int end)                               rule_number_t begin, rule_number_t end)
152  {  {
153    int r;    int r;
154    symbol_t *last_lhs = NULL;    symbol_t *last_lhs = NULL;
# Line 195  grammar_rules_print (FILE *out) Line 195  grammar_rules_print (FILE *out)
195  void  void
196  grammar_dump (FILE *out, const char *title)  grammar_dump (FILE *out, const char *title)
197  {  {
   int i;  
   item_number_t *r;  
   
198    fprintf (out, "%s\n\n", title);    fprintf (out, "%s\n\n", title);
199    fprintf (out,    fprintf (out,
200             "ntokens = %d, nvars = %d, nsyms = %d, nrules = %d, nritems = %d\n\n",             "ntokens = %d, nvars = %d, nsyms = %d, nrules = %d, nritems = %d\n\n",
201             ntokens, nvars, nsyms, nrules, nritems);             ntokens, nvars, nsyms, nrules, nritems);
202    
203    
204    fprintf (out, "Variables\n---------\n\n");    fprintf (out, "Variables\n---------\n\n");
205    fprintf (out, "Value  Sprec  Sassoc  Tag\n");    {
206    for (i = ntokens; i < nsyms; i++)      symbol_number_t i;
207      fprintf (out, "%5d  %5d   %5d  %s\n",      fprintf (out, "Value  Sprec  Sassoc  Tag\n");
208               i,  
209               symbols[i]->prec, symbols[i]->assoc,      for (i = ntokens; i < nsyms; i++)
210               symbol_tag_get (symbols[i]));        fprintf (out, "%5d  %5d   %5d  %s\n",
211    fprintf (out, "\n\n");                 i,
212                   symbols[i]->prec, symbols[i]->assoc,
213                   symbol_tag_get (symbols[i]));
214        fprintf (out, "\n\n");
215      }
216    
217    fprintf (out, "Rules\n-----\n\n");    fprintf (out, "Rules\n-----\n\n");
218    fprintf (out, "Num (Prec, Assoc, Useful, Ritem Range) Lhs -> Rhs (Ritem range) [Num]\n");    {
219    for (i = 1; i < nrules + nuseless_productions + 1; i++)      rule_number_t i;
220      {      fprintf (out, "Num (Prec, Assoc, Useful, Ritem Range) Lhs -> Rhs (Ritem range) [Num]\n");
221        int rhs_count = 0;      for (i = 1; i < nrules + nuseless_productions + 1; i++)
222        /* Find the last RHS index in ritems. */        {
223        for (r = rules[i].rhs; *r >= 0; ++r)          rule_t *rule = &rules[i];
224          ++rhs_count;          item_number_t *r = NULL;
225        fprintf (out, "%3d (%2d, %2d, %2d, %2d-%2d)   %2d ->",          int rhs_count = 0;
226                 i - 1,          /* Find the last RHS index in ritems. */
227                 rules[i].prec ? rules[i].prec->prec : 0,          for (r = rule->rhs; *r >= 0; ++r)
228                 rules[i].prec ? rules[i].prec->assoc : 0,            ++rhs_count;
229                 rules[i].useful,          fprintf (out, "%3d (%2d, %2d, %2d, %2d-%2d)   %2d ->",
230                 rules[i].rhs - ritem,                   i - 1,
231                 rules[i].rhs - ritem + rhs_count - 1,                   rule->prec ? rule->prec->prec : 0,
232                 rules[i].lhs->number);                   rule->prec ? rule->prec->assoc : 0,
233        /* Dumped the RHS. */                   rule->useful,
234        for (r = rules[i].rhs; *r >= 0; r++)                   rule->rhs - ritem,
235          fprintf (out, " %3d", *r);                   rule->rhs - ritem + rhs_count - 1,
236        fprintf (out, "  [%d]\n", -(*r) - 1);                   rule->lhs->number);
237      }          /* Dumped the RHS. */
238            for (r = rule->rhs; *r >= 0; r++)
239              fprintf (out, " %3d", *r);
240            fprintf (out, "  [%d]\n", -(*r) - 1);
241          }
242      }
243    fprintf (out, "\n\n");    fprintf (out, "\n\n");
244    
245    fprintf (out, "Rules interpreted\n-----------------\n\n");    fprintf (out, "Rules interpreted\n-----------------\n\n");
246    for (i = 1; i < nrules + nuseless_productions + 1; i++)    {
247      {      rule_number_t r;
248        fprintf (out, "%-5d  ", i);      for (r = 1; r < nrules + nuseless_productions + 1; r++)
249        rule_print (&rules[i], out);        {
250      }          fprintf (out, "%-5d  ", r);
251            rule_print (&rules[r], out);
252          }
253      }
254    fprintf (out, "\n\n");    fprintf (out, "\n\n");
255  }  }
256    

Legend:
Removed from v.1.38  
changed lines
  Added in v.1.39

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