# "Das Haus", "Die Ente" und "Der Kiesweg" erkennen kann, aber nicht # "Die Haus", "Das Ente" usw. s >> art(gen='?g') + nn(gen = '?g') art >> DER(gen='m') | DAS(gen='n') | DIE(gen='f') nn >> HAUS(gen='n') | KIESWEG(gen='m') | ENTE(gen='f') # Parser, der die oben definierte Sprache erkennt p = RecursiveDescentParser(s, lambda t: t["word"], lambda t: t) while True: src = raw_input("Gib etwas ein: ") src = src.lower() tokens = src.split(" ") # verwandelt die Liste von Worten in eine Liste von Dictionaries fttokens = [ {'word': x} for x in tokens ] semantic = p.first(fttokens) if semantic != None: print "Aha, ich verstehe:" print semantic else: print "Das verstehe ich leider nicht."