def test_elim_long_right(self): self.grammar.rules = cnf.epsilon_elim(self.grammar.start, self.grammar.rules) print_grammar(self.grammar.rules) self.grammar.rules = cnf.chain_elim(self.grammar.rules) print_grammar(self.grammar.rules) self.grammar.rules = cnf.non_iso_term_elim(self.grammar.rules, self.grammar.variables, self.grammar.alphabet) if isinstance(self.grammar.rules, tuple): print_grammar(self.grammar.rules[0]) shorted_d = cnf.long_right_elim(self.grammar.rules[0], self.grammar.alphabet) for value in shorted_d.values(): for val in value: self.assertIsNot(len(val), 3 or 4 or 5, ERRMSG_LONG_RIGHT) else: print_grammar(self.grammar.rules) shorted_d = cnf.long_right_elim(self.grammar.rules, self.grammar.alphabet) for value in shorted_d.values(): for val in value: self.assertIsNot(len(val), 3 or 4 or 5, ERRMSG_LONG_RIGHT) print("successfully eliminated_ long right sides for TEST_A: ") print_grammar(shorted_d)
def test_elim_nonisoterm(self): self.grammar.rules = cnf.non_iso_term_elim(self.grammar.rules, self.grammar.variables, self.grammar.alphabet) if isinstance(self.grammar.rules, tuple): for value in self.grammar.rules[0].values(): for strings in value: if len(strings) > 1: for term in self.grammar.alphabet: self.assertNotIn(term, strings, ERRMSG_NON_ISO) print( "Successfully eliminated_ all occurrences of non-isolated terminal symbols." )