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: