Esempio n. 1
0
 def get_rand_rhs(self, lhs):
     if not isinstance(lhs, Nonterminal): lhs = Nonterminal(lhs.upper())
     r = random.random()
     s = 0
     for i in self._index[lhs]:
         p = self._productions[i]
         s += p.prob()
         if s > r: return p
     return None
Esempio n. 2
0
 def get_rand_rhs(self,lhs):
     if not isinstance(lhs,Nonterminal): lhs = Nonterminal(lhs.upper())
     r = random.random()
     s = 0
     for i in self._index[lhs]:
         p = self._productions[i]
         s += p.prob()
         if s > r: return p
     return None
Esempio n. 3
0
 def get_prob_rhs(self, lhs, prob):
     if not isinstance(lhs, Nonterminal): lhs = Nonterminal(lhs.upper())
     rhs = []
     if prob > 1 and prob < 100: prob /= 100
     p = 0.0
     for r in self._index[lhs]:
         rule = self._productions[r]
         p += rule.prob()
         rhs.append(rule)
         if p > prob: break
     return rhs
Esempio n. 4
0
 def get_prob_rhs(self,lhs,prob):
     if not isinstance(lhs,Nonterminal): lhs = Nonterminal(lhs.upper())
     rhs = []
     if prob > 1 and prob < 100: prob /= 100
     p = 0.0
     for r in self._index[lhs]:
         rule = self._productions[r]
         p += rule.prob()
         rhs.append(rule)
         if p > prob: break
     return rhs
Esempio n. 5
0
 def get_max_rhs(self, lhs):
     if not isinstance(lhs, Nonterminal): lhs = Nonterminal(lhs.upper())
     return self._productions[self._index[lhs][0]]
Esempio n. 6
0
 def get_rand_rhs(self, lhs):
     if not isinstance(lhs, Nonterminal): lhs = Nonterminal(lhs.upper())
     return self._productions[random.choice(self._index[lhs])]
Esempio n. 7
0
 def get_all_rhs(self, lhs=''):
     if not lhs: return self._productions
     if not isinstance(lhs, Nonterminal): lhs = Nonterminal(lhs.upper())
     return [self._productions[n] for n in self._index[lhs]]
Esempio n. 8
0
 def get_all_rhs(self,lhs=''):
     if not lhs: return self._productions
     if not isinstance(lhs,Nonterminal): lhs = Nonterminal(lhs.upper())
     return [self._productions[n] for n in self._index[lhs]]
Esempio n. 9
0
 def get_max_rhs(self,lhs):
     if not isinstance(lhs,Nonterminal): lhs = Nonterminal(lhs.upper())
     return self._productions[self._index[lhs][0]]
Esempio n. 10
0
 def get_rand_rhs(self,lhs):
     if not isinstance(lhs,Nonterminal): lhs = Nonterminal(lhs.upper())
     return self._productions[random.choice(self._index[lhs])]