public Production NextCNFTerminalProduction(int numNonterminals, IList<Terminal> terminals, Terminal rhs = null) { if (rhs == null) { rhs = RandomTerminal(terminals); } var lhs = RandomNonterminal(numNonterminals); return new Production(lhs, new Sentence { rhs }); }