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

Diff of /bison/src/lalr.c

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

revision 1.68 by akim, Sat Jun 15 18:23:12 2002 UTC revision 1.69 by akim, Sat Jun 15 18:23:50 2002 UTC
# Line 298  add_lookback_edge (state_t *state, int r Line 298  add_lookback_edge (state_t *state, int r
298    shorts *sp;    shorts *sp;
299    
300    for (i = 0; i < state->nlookaheads; ++i)    for (i = 0; i < state->nlookaheads; ++i)
301      if (LArule[state->lookaheadsp + i]->number == ruleno)      if (state->lookaheads_rule[i]->number == ruleno)
302        break;        break;
303    
304    assert (LArule[state->lookaheadsp + i]->number == ruleno);    assert (state->lookaheads_rule[i]->number == ruleno);
305    
306    sp = XCALLOC (shorts, 1);    sp = XCALLOC (shorts, 1);
307    sp->next = lookback[state->lookaheadsp + i];    sp->next = lookback[(state->lookaheads - LA) + i];
308    sp->value = gotono;    sp->value = gotono;
309    lookback[state->lookaheadsp + i] = sp;    lookback[(state->lookaheads - LA) + i] = sp;
310  }  }
311    
312    
# Line 506  compute_lookaheads (void) Line 506  compute_lookaheads (void)
506  }  }
507    
508    
509  /*--------------------------------------.  /*-------------------------------------------------------------.
510  | Initializing the lookaheads members.  |  | Count the number of lookaheads required for each state       |
511  `--------------------------------------*/  | (NLOOKAHEADS member).  Compute the total number of LA, NLA.  |
512    `-------------------------------------------------------------*/
513    
514  static void  static void
515  initialize_lookaheads (void)  states_lookaheads_count (void)
516  {  {
517    size_t i;    size_t i;
518    nLA = 0;    nLA = 0;
519    
520      /* Count   */
521    for (i = 0; i < nstates; i++)    for (i = 0; i < nstates; i++)
522      {      {
523        int k;        int k;
# Line 540  initialize_lookaheads (void) Line 543  initialize_lookaheads (void)
543            }            }
544    
545        states[i]->nlookaheads = nlookaheads;        states[i]->nlookaheads = nlookaheads;
       states[i]->lookaheadsp = nLA;  
546        nLA += nlookaheads;        nLA += nlookaheads;
547      }      }
548  }  }
549    
550    
551    /*--------------------------------------.
552    | Initializing the lookaheads members.  |
553    `--------------------------------------*/
554    
555    static void
556    states_lookaheads_initialize (void)
557    {
558      size_t i;
559      bitsetv pLA = LA;
560      rule_t **pLArule = LArule;
561    
562      /* Count the number of lookaheads required for each state
563         (NLOOKAHEADS member).  */
564      for (i = 0; i < nstates; i++)
565        {
566          states[i]->lookaheads = pLA;
567          states[i]->lookaheads_rule = pLArule;
568          pLA += states[i]->nlookaheads;
569          pLArule += states[i]->nlookaheads;
570        }
571    }
572    
573    
574  /*---------------------------------------.  /*---------------------------------------.
575  | Output the lookaheads for each state.  |  | Output the lookaheads for each state.  |
576  `---------------------------------------*/  `---------------------------------------*/
# Line 563  lookaheads_print (FILE *out) Line 588  lookaheads_print (FILE *out)
588    
589        for (j = 0; j < states[i]->nlookaheads; ++j)        for (j = 0; j < states[i]->nlookaheads; ++j)
590          for (k = 0; k < ntokens; ++k)          for (k = 0; k < ntokens; ++k)
591            if (bitset_test (LA[states[i]->lookaheadsp + j], k))            if (bitset_test (states[i]->lookaheads[j], k))
592              fprintf (out, "   on %d (%s) -> rule %d\n",              fprintf (out, "   on %d (%s) -> rule %d\n",
593                       k, symbol_tag_get (symbols[k]),                       k, symbol_tag_get (symbols[k]),
594                       LArule[states[i]->lookaheadsp + j]->number - 1);                       states[i]->lookaheads_rule[j]->number - 1);
595      }      }
596    fprintf (out, "Lookaheads: END\n");    fprintf (out, "Lookaheads: END\n");
597  }  }
# Line 574  lookaheads_print (FILE *out) Line 599  lookaheads_print (FILE *out)
599  void  void
600  lalr (void)  lalr (void)
601  {  {
602    initialize_lookaheads ();    states_lookaheads_count ();
603    initialize_LA ();    initialize_LA ();
604      states_lookaheads_initialize ();
605    set_goto_map ();    set_goto_map ();
606    initialize_F ();    initialize_F ();
607    build_relations ();    build_relations ();

Legend:
Removed from v.1.68  
changed lines
  Added in v.1.69

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