def parse_sentence(self, sentence): sentence = self.clear_sentence(sentence) words = sentence.strip().split() variants = [self.word_to_forms(word) for word in words] errors = [] for variant in itertools.product(*variants): syntax = ' '.join(v.form for v in variant) words = [v.word for v in variant] try: builder = Parser.parse(syntax) thought = builder.build(words) # TODO какой-то подходящий выбор мысли а не возврат первого же успеха return thought except SyntaxError, e: errors.append("%s: %s" % (str(e), syntax))
def test_grammar(self): syntax = """Noun[]{} Verb[]{} .[]{}""" sentence = (Noun("apple"), Verb("exist"), Dot()) builder = Parser.parse(syntax) self.assertEqual("A apple exists.", str(builder.build(sentence)))