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()
 |