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

Diff of /bison/src/derives.c

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

revision 1.30 by akim, Sun May 26 18:39:04 2002 UTC revision 1.31 by akim, Sun Jun 30 17:31:19 2002 UTC
# Line 1  Line 1 
1  /* Match rules with nonterminals for bison,  /* Match rules with nonterminals for bison,
2     Copyright 1984, 1989, 2000, 2001  Free Software Foundation, Inc.     Copyright 1984, 1989, 2000, 2001, 2002  Free Software Foundation, Inc.
3    
4     This file is part of Bison, the GNU Compiler Compiler.     This file is part of Bison, the GNU Compiler Compiler.
5    
# Line 27  Line 27 
27  #include "gram.h"  #include "gram.h"
28  #include "derives.h"  #include "derives.h"
29    
30  short **derives = NULL;  rule_number_t **derives = NULL;
31    
32  static void  static void
33  print_derives (void)  print_derives (void)
# Line 38  print_derives (void) Line 38  print_derives (void)
38    
39    for (i = ntokens; i < nsyms; i++)    for (i = ntokens; i < nsyms; i++)
40      {      {
41        short *sp;        rule_number_t *rp;
42        fprintf (stderr, "\t%s derives\n", symbols[i]->tag);        fprintf (stderr, "\t%s derives\n", symbols[i]->tag);
43        for (sp = derives[i]; *sp > 0; sp++)        for (rp = derives[i]; *rp > 0; rp++)
44          {          {
45            item_number_t *rhsp;            item_number_t *rhsp;
46            fprintf (stderr, "\t\t%d:", *sp);            fprintf (stderr, "\t\t%d:", *rp);
47            for (rhsp = rules[*sp].rhs; *rhsp >= 0; ++rhsp)            for (rhsp = rules[*rp].rhs; *rhsp >= 0; ++rhsp)
48              fprintf (stderr, " %s", symbols[*rhsp]->tag);              fprintf (stderr, " %s", symbol_tag_get (symbols[*rhsp]));
49            fprintf (stderr, " (rule %d)\n", -*rhsp - 1);            fprintf (stderr, " (rule %d)\n",
50                       rule_number_of_item_number (*rhsp) - 1);
51          }          }
52      }      }
53    
# Line 57  print_derives (void) Line 58  print_derives (void)
58  void  void
59  set_derives (void)  set_derives (void)
60  {  {
61    int i;    symbol_number_t i;
62      rule_number_t r;
63    shorts *p;    shorts *p;
64    short *q;    rule_number_t *q;
65    shorts **dset;    shorts **dset;
66    shorts *delts;    shorts *delts;
67    
# Line 67  set_derives (void) Line 69  set_derives (void)
69    delts = XCALLOC (shorts, nrules + 1);    delts = XCALLOC (shorts, nrules + 1);
70    
71    p = delts;    p = delts;
72    for (i = nrules; i > 0; i--)    for (r = nrules; r > 0; r--)
73      {      {
74        symbol_number_t lhs = rules[i].lhs->number;        symbol_number_t lhs = rules[r].lhs->number;
75        p->next = dset[lhs];        p->next = dset[lhs];
76        p->value = i;        p->value = r;
77        dset[lhs] = p;        dset[lhs] = p;
78        p++;        p++;
79      }      }
80    
81    derives = XCALLOC (short *, nvars) - ntokens;    derives = XCALLOC (rule_number_t *, nvars) - ntokens;
82    q = XCALLOC (short, nvars + nrules);    q = XCALLOC (short, nvars + int_of_rule_number (nrules));
83    
84    for (i = ntokens; i < nsyms; i++)    for (i = ntokens; i < nsyms; i++)
85      {      {

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

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