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
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
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
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
def get_max_rhs(self, lhs): if not isinstance(lhs, Nonterminal): lhs = Nonterminal(lhs.upper()) return self._productions[self._index[lhs][0]]
def get_rand_rhs(self, lhs): if not isinstance(lhs, Nonterminal): lhs = Nonterminal(lhs.upper()) return self._productions[random.choice(self._index[lhs])]
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]]
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]]
def get_max_rhs(self,lhs): if not isinstance(lhs,Nonterminal): lhs = Nonterminal(lhs.upper()) return self._productions[self._index[lhs][0]]
def get_rand_rhs(self,lhs): if not isinstance(lhs,Nonterminal): lhs = Nonterminal(lhs.upper()) return self._productions[random.choice(self._index[lhs])]