-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathminimal.c
29 lines (28 loc) · 1.01 KB
/
minimal.c
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 "laurelang.h"
#include "predpub.h"
#include <stdio.h>
#include <readline/readline.h>
int main() {
printf("laure (minimal)\n");
laure_session_t *session = laure_session_new(parameter_repl_mode);
laure_set_translators();
laure_init_name_buffs();
laure_register_builtins(session);
string line;
while ((line = readline("?- ")) != NULL) {
laure_parse_many_result lpmr = laure_parse_many(line, ',', NULL);
if (! lpmr.is_ok)
printf("error: %s\n", lpmr.err);
else {
qcontext *qctx = qcontext_new(laure_expression_compose(lpmr.exps));
var_process_kit *vpk = laure_vpk_create(lpmr.exps);
control_ctx *cctx = control_new(session, session->scope, qctx, vpk, NULL, false);
qresp response = laure_start(cctx, qctx->expset);
if (response.state == q_error)
printf("error: %s\n", response.payload);
else if (! response.payload)
printf("false\n");
}
}
return 0;
}