summaryrefslogtreecommitdiff
path: root/repl.c
blob: e81c2f2878d54039a755f5caa1d963ea574d17cb (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include <u.h>
#include <libc.h>

#include "dat.h"
#include "fns.h"

void
repl(Term *database)
{
	int fd = 0; /* Standard input */
	while(1){
		print("?- ");
		Term *query = parse(fd, 1);
		Binding *bindings = nil;
		int success = evalquery(database, query, &bindings);
		if(success == 0)
			print("false.\n");
		else{
			if(bindings == nil)
				print("true.\n");
			else{
				while(bindings){
					print("%S = %S\n", bindings->name, prettyprint(bindings->value));
					bindings = bindings->next;
				}
			}
		}
	}
}