6.9.3.4. lookaheads

6.9.3.4. lookaheads

Start python section to interscript/parsers/lalr1.py[16]
   392: #line 559 "lalr1_parser.ipk"
   393:   def lookaheads(self, itemset):
   394:     setsofitems = kernels = self.kernelitems
   395:     spontaneous = []
   396:     propagates = {}
   397:     gotomap = {}
   398:     for (kpi, kri) in itemset:
   399:       C = self.closure([((kpi, kri), Grammar.DummyLA)])
   400:       for (cpi, cri), t in C:
   401:         if (cri) == len(self.productions[cpi].RHS):
   402:           continue
   403:         s = self.productions[cpi].RHS[cri]
   404:         if gotomap.has_key(s):
   405:           newstate = gotomap[s]
   406:         else:
   407:           newstate = setsofitems.index(self.goto(itemset, s))
   408:           gotomap[s] = newstate
   409:         if t != Grammar.DummyLA:
   410:           spontaneous.append((newstate, (cpi, cri+1), t))
   411:         else:
   412:           if propagates.has_key((kpi, kri)):
   413:             propagates[(kpi, kri)].append((newstate, (cpi, cri+1)))
   414:           else:
   415:             propagates[(kpi, kri)]=[(newstate, (cpi, cri+1))]
   416:     return spontaneous, propagates
   417: 
   418: 
End python section to interscript/parsers/lalr1.py[16]