/[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.29 by akim, Mon Apr 22 08:21:54 2002 UTC revision 1.30 by akim, Mon Apr 22 08:23:07 2002 UTC
# Line 21  Line 21 
21    
22  #include "system.h"  #include "system.h"
23  #include "quotearg.h"  #include "quotearg.h"
 #include "gram.h"  
24  #include "symtab.h"  #include "symtab.h"
25    #include "gram.h"
26    #include "reduce.h"
27  #include "reader.h"  #include "reader.h"
28    
29  /* comments for these variables are in gram.h  */  /* comments for these variables are in gram.h  */
# Line 102  ritem_longest_rhs (void) Line 103  ritem_longest_rhs (void)
103    
104    return max;    return max;
105  }  }
106    
107    
108    /*-------------------.
109    | Dump the grammar.  |
110    `-------------------*/
111    
112    void
113    grammar_dump (FILE *out, const char *title)
114    {
115      int i;
116      item_number_t *r;
117    
118      fprintf (out, "%s\n\n", title);
119      fprintf (out,
120               "ntokens = %d, nvars = %d, nsyms = %d, nrules = %d, nritems = %d\n\n",
121               ntokens, nvars, nsyms, nrules, nritems);
122      fprintf (out, "Variables\n---------\n\n");
123      fprintf (out, "Value  Sprec  Sassoc  Tag\n");
124      for (i = ntokens; i < nsyms; i++)
125        fprintf (out, "%5d  %5d   %5d  %s\n",
126                 i,
127                 symbols[i]->prec, symbols[i]->assoc,
128                 quotearg_style (escape_quoting_style, symbols[i]->tag));
129      fprintf (out, "\n\n");
130      fprintf (out, "Rules\n-----\n\n");
131      fprintf (out, "Num (Prec, Assoc, Useful, Ritem Range) Lhs -> Rhs (Ritem range) [Num]\n");
132      for (i = 1; i < nrules + nuseless_productions + 1; i++)
133        {
134          int rhs_count = 0;
135          /* Find the last RHS index in ritems. */
136          for (r = rules[i].rhs; *r >= 0; ++r)
137            ++rhs_count;
138          fprintf (out, "%3d (%2d, %2d, %2d, %2d-%2d)   %2d ->",
139                   i - 1,
140                   rules[i].prec ? rules[i].prec->prec : 0,
141                   rules[i].prec ? rules[i].prec->assoc : 0,
142                   rules[i].useful,
143                   rules[i].rhs - ritem,
144                   rules[i].rhs - ritem + rhs_count - 1,
145                   rules[i].lhs->number);
146          /* Dumped the RHS. */
147          for (r = rules[i].rhs; *r >= 0; r++)
148            fprintf (out, " %3d", *r);
149          fprintf (out, "  [%d]\n", -(*r) - 1);
150        }
151      fprintf (out, "\n\n");
152      fprintf (out, "Rules interpreted\n-----------------\n\n");
153      for (i = 1; i < nrules + nuseless_productions + 1; i++)
154        {
155          fprintf (out, "%-5d  %s :",
156                   i, quotearg_style (escape_quoting_style, rules[i].lhs->tag));
157          for (r = rules[i].rhs; *r >= 0; r++)
158            fprintf (out, " %s",
159                     quotearg_style (escape_quoting_style, symbols[*r]->tag));
160          fputc ('\n', out);
161        }
162      fprintf (out, "\n\n");
163    }

Legend:
Removed from v.1.29  
changed lines
  Added in v.1.30

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