Ejemplo n.º 1
0
 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)
Ejemplo n.º 2
0
 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."
     )