示例#1
0
    print "term", args[1], "ausdruck -> ausdruck"
    if args[1] == '+':
        print "  (", args[0], "+", args[2], "->", args[0] + args[2], ")"
        return args[0] + args[2]
    elif args[1] == '-':
        print "  (", args[0], "-", args[2], "->", args[0] + args[2], ")"
        return args[0] - args[2]

def satz_action(ausdruck, fragezeichen):
    print "ausdruck -> s"
    print "  (", ausdruck, "->", ausdruck, ")"
    return ausdruck

p = RecursiveDescentParser(s, lambda t: t[0], lambda t: t[1])

p.setParseAction(s, satz_action)

p.setParseAction(zahl, zahl_action)
p.setParseAction(faktor, faktor_action)
p.setParseAction(term, term_action)
p.setParseAction(ausdruck, ausdruck_action)

# Erstellt einen einfachen Lexer
lex = makeLexer(['+','-','*','/','(',')',('ZAHL', r"[0-9]+"), (None, r"\s+")])


while True:
    src = raw_input("Gib etwas ein: ")
    src = src.lower()
    tokens = lex(src)
    print tokens
示例#2
0
        np2 = 'ort'
    if verb == 'ist':
        return [np2, np1]
    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."
示例#3
0
def extractName(semantic):
    if semantic[0] == 'name':
        return semantic[1]

    if semantic[0] == 'pron':
        if semantic[1] == 'f':
            return femaleReferent
        elif semantic[1] == 'm':
            return maleReferent
        else:
            return 'ich'


p = RecursiveDescentParser(s)

p.setParseAction(name, name_action)
p.setParseAction(perspron, perspron_action)
p.setParseAction(vtr, vtr_action)
p.setParseAction(adj, adj_action)
p.setParseAction(nn, nn_action)
p.setParseAction(np, np_action)
p.setParseAction(pp, pp_action)
p.setParseAction(s, s_action)


while True:
    src = raw_input("Gib etwas ein: ")
    src = src.lower()
    tokens = src.split(" ")
    tokens.append("EOL")
    g = p.parse(tokens)