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

Diff of /bison/src/nullable.c

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

revision 1.25 by akim, Sat Dec 29 14:20:13 2001 UTC revision 1.26 by akim, Sun Apr 7 15:29:36 2002 UTC
# Line 71  set_nullable (void) Line 71  set_nullable (void)
71    for (ruleno = 1; ruleno < nrules + 1; ++ruleno)    for (ruleno = 1; ruleno < nrules + 1; ++ruleno)
72      if (rules[ruleno].useful)      if (rules[ruleno].useful)
73        {        {
74          if (ritem[rules[ruleno].rhs] >= 0)          if (rules[ruleno].rhs[0] >= 0)
75            {            {
76              /* This rule has a non empty RHS. */              /* This rule has a non empty RHS. */
77              short *r;              short *r;
78              int any_tokens = 0;              int any_tokens = 0;
79              for (r = &ritem[rules[ruleno].rhs]; *r >= 0; ++r)              for (r = rules[ruleno].rhs; *r >= 0; ++r)
80                if (ISTOKEN (*r))                if (ISTOKEN (*r))
81                  any_tokens = 1;                  any_tokens = 1;
82    
83              /* This rule has only nonterminals: schedule it for the second              /* This rule has only nonterminals: schedule it for the second
84                 pass.  */                 pass.  */
85              if (!any_tokens)              if (!any_tokens)
86                for (r = &ritem[rules[ruleno].rhs]; *r >= 0; ++r)                for (r = rules[ruleno].rhs; *r >= 0; ++r)
87                  {                  {
88                    rcount[ruleno]++;                    rcount[ruleno]++;
89                    p->next = rsets[*r];                    p->next = rsets[*r];
# Line 95  set_nullable (void) Line 95  set_nullable (void)
95          else          else
96            {            {
97              /* This rule has an empty RHS. */              /* This rule has an empty RHS. */
98              assert (ritem[rules[ruleno].rhs] == -ruleno);              assert (rules[ruleno].rhs[0] == -ruleno);
99              if (rules[ruleno].useful && !nullable[rules[ruleno].lhs])              if (rules[ruleno].useful && !nullable[rules[ruleno].lhs])
100                {                {
101                  nullable[rules[ruleno].lhs] = 1;                  nullable[rules[ruleno].lhs] = 1;

Legend:
Removed from v.1.25  
changed lines
  Added in v.1.26

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