示例#1
0
    else:
        raise ValueError("Kann keinen miniprolog-Fakt erzeugen")
    
def vtr_action(verb):
    return verb

def np_action(artikel, nomen):
    return nomen

def nn_action(nomen):
    return nomen

p.setParseAction(np, np_action)
p.setParseAction(nn, nn_action)
p.setParseAction(vtr, vtr_action)
p.setParseAction(s, s_action)

while True:
    src = raw_input("Gib etwas ein: ")
    src = src.lower()
    tokens = src.split(" ")
    g = p.parse(tokens)
    try:
        semantic = g.next()
        print "Aha, ich verstehe:"
        print semantic        
    except StopIteration:
        print "Das verstehe ich leider nicht."
    

示例#2
0
# Definiert eine Grammatik, welche Sätze wie "Das alte Haus ist ein Ort" oder
# "Der Kiesweg ist ein Ort" parsen kann.
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')


p = RecursiveDescentParser(s, lambda t: t["word"], lambda t: t)

while True:
    src = raw_input("Gib etwas ein: ")
    src = src.lower()
    tokens = src.split(" ")
    fttokens = [ {'word': x} for x in tokens ]
    g = p.parse(fttokens)
    try:
        semantic = g.next()
        print "Aha, ich verstehe:"
        print semantic
    except StopIteration:
        print "Das verstehe ich leider nicht."