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

Diff of /bison/src/reduce.c

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

revision 1.60 by akim, Mon Apr 22 08:21:55 2002 UTC revision 1.61 by akim, Mon Apr 22 08:23:07 2002 UTC
# Line 51  static bitset V; Line 51  static bitset V;
51  static bitset V1;  static bitset V1;
52    
53  static int nuseful_productions;  static int nuseful_productions;
54  static int nuseless_productions;  int nuseless_productions;
55  static int nuseful_nonterminals;  static int nuseful_nonterminals;
56  int nuseless_nonterminals;  int nuseless_nonterminals;
57    
# Line 371  reduce_output (FILE *out) Line 371  reduce_output (FILE *out)
371      }      }
372  }  }
373    
 static void  
 dump_grammar (FILE *out)  
 {  
   int i;  
   item_number_t *r;  
374    
   fprintf (out, "REDUCED GRAMMAR\n\n");  
   fprintf (out,  
            "ntokens = %d, nvars = %d, nsyms = %d, nrules = %d, nritems = %d\n\n",  
            ntokens, nvars, nsyms, nrules, nritems);  
   fprintf (out, "Variables\n---------\n\n");  
   fprintf (out, "Value  Sprec  Sassoc  Tag\n");  
   for (i = ntokens; i < nsyms; i++)  
     fprintf (out, "%5d  %5d   %5d  %s\n",  
              i,  
              symbols[i]->prec, symbols[i]->assoc,  
              quotearg_style (escape_quoting_style, symbols[i]->tag));  
   fprintf (out, "\n\n");  
   fprintf (out, "Rules\n-----\n\n");  
   fprintf (out, "Num (Prec, Assoc, Useful, Ritem Range) Lhs -> Rhs (Ritem range) [Num]\n");  
   for (i = 1; i < nrules + nuseless_productions + 1; i++)  
     {  
       int rhs_count = 0;  
       /* Find the last RHS index in ritems. */  
       for (r = rules[i].rhs; *r >= 0; ++r)  
         ++rhs_count;  
       fprintf (out, "%3d (%2d, %2d, %2d, %2d-%2d)   %2d ->",  
                i - 1,  
                rules[i].prec->prec,  
                rules[i].prec->assoc,  
                rules[i].useful,  
                rules[i].rhs - ritem,  
                rules[i].rhs - ritem + rhs_count - 1,  
                rules[i].lhs->number);  
       /* Dumped the RHS. */  
       for (r = rules[i].rhs; *r >= 0; r++)  
         fprintf (out, "%3d", *r);  
       fprintf (out, "  [%d]\n", -(*r) - 1);  
     }  
   fprintf (out, "\n\n");  
   fprintf (out, "Rules interpreted\n-----------------\n\n");  
   for (i = 1; i < nrules + nuseless_productions + 1; i++)  
     {  
       fprintf (out, "%-5d  %s :",  
                i, quotearg_style (escape_quoting_style, rules[i].lhs->tag));  
       for (r = rules[i].rhs; *r >= 0; r++)  
         fprintf (out, " %s",  
                  quotearg_style (escape_quoting_style, symbols[*r]->tag));  
       fputc ('\n', out);  
     }  
   fprintf (out, "\n\n");  
 }  
375    
376    
377    
# Line 494  reduce_grammar (void) Line 443  reduce_grammar (void)
443    
444    if (trace_flag)    if (trace_flag)
445      {      {
446        dump_grammar (stderr);        grammar_dump (stderr, "Reduced Grammar");
447    
448        fprintf (stderr, "reduced %s defines %d terminals, %d nonterminals\        fprintf (stderr, "reduced %s defines %d terminals, %d nonterminals\
449  , and %d productions.\n",  , and %d productions.\n",

Legend:
Removed from v.1.60  
changed lines
  Added in v.1.61

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