summaryrefslogtreecommitdiff
path: root/parser.c
diff options
context:
space:
mode:
authorPeter Mikkelsen <peter@pmikkelsen.com>2021-07-05 16:27:38 +0000
committerPeter Mikkelsen <peter@pmikkelsen.com>2021-07-05 16:27:38 +0000
commit44ab8a339c78bcc3460d44b2f435116f21faa60a (patch)
treefa512c143c5df81c0c333a187b9083cbac9636f6 /parser.c
parent3f26a0f2a1f699e628136ec5be6178b5ab40fc44 (diff)
First step on modules. Still very very rough.
Diffstat (limited to 'parser.c')
-rw-r--r--parser.c12
1 files changed, 5 insertions, 7 deletions
diff --git a/parser.c b/parser.c
index 2e64d20..0e4a175 100644
--- a/parser.c
+++ b/parser.c
@@ -91,7 +91,6 @@ parse(int fd, Biobuf *bio, int querymode)
}else
parsein = bio;
- initgoals = nil;
initoperators();
nexttoken();
@@ -125,12 +124,10 @@ prologtext(int querymode)
if(t->tag == CompoundTerm && runestrcmp(t->text, L":-") == 0 && t->arity == 1){
Term *body = t->children;
print("Got directive: %S\n", prettyprint(body, 0, 0, 0));
- if(body->tag == CompoundTerm && body->arity == 1 && runestrcmp(body->text, L"initialization") == 0){
- Term *tmp = initgoals;
- initgoals = body->children;
- initgoals->next = tmp;
- }
- t = prologtext(querymode);
+ if(runestrcmp(body->text, L"module") == 0 && body->arity == 2)
+ t->next = prologtext(querymode);
+ else
+ t = prologtext(querymode);
}else if(t->tag == CompoundTerm && runestrcmp(t->text, L":-") == 0 && t->arity == 2){
t->next = prologtext(querymode);
}else if(t->tag == AtomTerm || t->tag == CompoundTerm){
@@ -391,6 +388,7 @@ initoperators(void)
addoperator(700, Xfx, L">");
addoperator(700, Xfx, L">=");
addoperator(700, Xfx, L"=..");
+ addoperator(600, Xfy, L":");
addoperator(500, Yfx, L"+");
addoperator(400, Yfx, L"*");
addoperator(400, Yfx, L"/");