diff options
author | Peter Mikkelsen <peter@pmikkelsen.com> | 2021-07-22 16:58:42 +0000 |
---|---|---|
committer | Peter Mikkelsen <peter@pmikkelsen.com> | 2021-07-22 16:58:42 +0000 |
commit | 0cf3816c9419954317fd54da5a063615402bf1d1 (patch) | |
tree | 5d9448eae4b0d8bf10f6f6d8b71be45506eda234 | |
parent | b1f62daf95818858863af0cfe7138a0acac751b2 (diff) |
Actually load repl.pl with the prolog loader, and handle module directives
-rw-r--r-- | builtins.c | 15 | ||||
-rw-r--r-- | loader.pl | 6 | ||||
-rw-r--r-- | module.c | 1 |
3 files changed, 19 insertions, 3 deletions
@@ -68,6 +68,7 @@ BuiltinProto(builtinstreamproperties); BuiltinProto(builtinsetstreamposition); BuiltinProto(builtinop); BuiltinProto(builtincurrentops); +BuiltinProto(builtinnewemptymodule); int compareterms(Term *, Term *); @@ -193,6 +194,8 @@ findbuiltin(Term *goal) return builtinop; if(Match(L"current_ops", 1)) return builtincurrentops; + if(Match(L"$new_empty_module", 1)) + return builtinnewemptymodule; return nil; } @@ -1164,7 +1167,7 @@ assertclause(Term *clause, Module *module, int after) p->builtin = 0; p->dynamic = 1; p->next = nil; - module->predicates = appendpredicate(module->predicates, p); + module->predicates = appendpredicate(p, module->predicates); return 1; } @@ -1631,4 +1634,14 @@ builtincurrentops(Term *goal, Binding **bindings, Module *module) Term *realops = mklist(oplist); return unify(ops, realops, bindings); +} + +int +builtinnewemptymodule(Term *goal, Binding **bindings, Module *module) +{ + USED(bindings); + USED(module); + Rune *name = goal->children->text; + addemptymodule(name); + return 1; }
\ No newline at end of file @@ -65,6 +65,10 @@ handle_directive(include(F), Module, NewModule) :- close(S). handle_directive(ensure_loaded(F), Module, Module) :- ensure_load(F). +handle_directive(module(NewModule, Exports), Module, NewModule) :- + is_atom(NewModule), + '$new_empty_module'(NewModule). + % Do something about the exports as well. handle_directive(D, Module, Module) :- write('Cannot handle directive: '), write(D), @@ -75,5 +79,5 @@ ensure_loads(_) :- fail. ensure_load(F) :- ( ensure_loads(F) -> true - ; asserta(ensure_loads(F)), load_module_from_file(F) + ; loader:asserta(ensure_loads(F)), load_module_from_file(F) ). @@ -21,7 +21,6 @@ initmodules(void) } usermodule = addemptymodule(L"user"); - parsemodule("/sys/lib/prolog/repl.pl"); parsemodule("/sys/lib/prolog/loader.pl"); } |