51 lines
1.2 KiB
Python
51 lines
1.2 KiB
Python
# python commands
|
|
|
|
import sys
|
|
import yap
|
|
|
|
#
|
|
# initialize engine
|
|
engine = yap.YAPEngine();
|
|
# engine = yap.YAPEngine(yap.YAPParams());
|
|
|
|
def query( s ):
|
|
q = engine.query(s)
|
|
while q.next():
|
|
vs = q.namedVars()
|
|
if vs.length() == 0:
|
|
print( "yes" )
|
|
return
|
|
else:
|
|
while vs.length() > 0:
|
|
eq = vs.car()
|
|
print( eq.getArg(1).text() + " = " + eq.getArg(2).text() )
|
|
vs = vs.cdr()
|
|
if q.deterministic():
|
|
return
|
|
s = input("next: ?")
|
|
if s.find(';') != 0 :
|
|
return
|
|
print( "no more answers" )
|
|
return
|
|
|
|
def live():
|
|
loop = True
|
|
while loop:
|
|
try:
|
|
s = input("?- ")
|
|
query( s )
|
|
except SyntaxError as err:
|
|
print("Syntax Error error: {0}".format(err))
|
|
except EOFError:
|
|
return
|
|
except RuntimeError as err:
|
|
print("YAP Execution Error: {0}".format(err))
|
|
except ValueError:
|
|
print("Could not convert data to an integer.")
|
|
except:
|
|
print("Unexpected error:", sys.exc_info()[0])
|
|
raise
|
|
|
|
|
|
live()
|