summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2021-07-07Oops remove debug printPeter Mikkelsen
2021-07-07Make arg/3 work according to specPeter Mikkelsen
2021-07-07Make functor/3 work according to specPeter Mikkelsen
2021-07-07Fix compare/3 for variables named _. They are never equalPeter Mikkelsen
2021-07-07Add missing pre defined operators from iso prologPeter Mikkelsen
2021-07-06Add list modulePeter Mikkelsen
2021-07-06Store the calling module in each goal, and fix a bug where unification could ↵Peter Mikkelsen
leave behind some bindings even though the unification failed.
2021-07-06Change the output of the repl a lille bitPeter Mikkelsen
2021-07-06Group clauses into predicates, and create all valid choicepoints at once. ↵Peter Mikkelsen
This is wastefull if one branch loops forever, but it is much nicer otherwise, since we know the choicepoints only gets created as long as their head is unifiable with the goal.
2021-07-05Turn integers and floats into seperate term typesPeter Mikkelsen
2021-07-05First step on modules. Still very very rough.Peter Mikkelsen
2021-07-03Make the goalstack global just like the choicestackPeter Mikkelsen
2021-07-03Add one global choicestack so we don't need to pass it aroundPeter Mikkelsen
2021-07-03Start adding support for read_term and write_termPeter Mikkelsen
2021-07-02Start work on input/output streamsPeter Mikkelsen
2021-07-02Fix Throw(What) macroPeter Mikkelsen
2021-07-02Begin work on set_prolog_flag/2 and current_prolog_flag/2Peter Mikkelsen
2021-07-02Remove strings, and add a (currently not changable) flag 'double_quotes' ↵Peter Mikkelsen
which defines how double quoted strings are stored.
2021-07-01Add standard error predicatesPeter Mikkelsen
2021-07-01Add exceptions :) implement catch/3 and throw/1Peter Mikkelsen
2021-07-01Start implementation of is/2Peter Mikkelsen
2021-07-01Remove = from examples now that it is in stdlibPeter Mikkelsen
2021-06-30Add length/2 and member/2Peter Mikkelsen
2021-06-30Prettyprint lists for realsPeter Mikkelsen
2021-06-30Allow the repl to backtrack to give alternative resultsPeter Mikkelsen
2021-06-30Add =../2Peter Mikkelsen
2021-06-30Add arg/3Peter Mikkelsen
2021-06-30Add functor/3Peter Mikkelsen
2021-06-30Add comparison predicatesPeter Mikkelsen
2021-06-30Add builtins for typetestsPeter Mikkelsen
2021-06-30Add a standard library with the "builtins" that doesn't really need to be ↵Peter Mikkelsen
actual builtins
2021-06-30Add support for builtins, and implement true/0, fail/0, call/1, and !/0 builtinsPeter Mikkelsen
2021-06-30Give queries another id than clauses, so variable names doesn't clashPeter Mikkelsen
2021-06-30Commit repl.c filePeter Mikkelsen
2021-06-30Add a basic replPeter Mikkelsen
2021-06-30Add todoPeter Mikkelsen
2021-06-30Treat the variable _ differently, in that it doesn't introduce a new bindingPeter Mikkelsen
2021-06-30Add backtracking to the evaluator. This means we have to keep track of ↵Peter Mikkelsen
choicepoints which is implemented the easy but wasteful way for now. I have also added a number which is used to differentiate variables from different application of the clauses.
2021-06-30Start work on an evaluator. For now it knows how to unify but doesn't know ↵Peter Mikkelsen
how to handle builtin predicates or how to backtrack
2021-06-29Understand :-initialization(Goal) directivePeter Mikkelsen
2021-06-29Add more operatorsPeter Mikkelsen
2021-06-29Make parse return a list of clauses. Also pretty print the entire list of ↵Peter Mikkelsen
clauses.
2021-06-29Parse terms in parenthesis correctlyPeter Mikkelsen
2021-06-29Parse lists and {a,b,c} syntax (What is this even called?)Peter Mikkelsen
2021-06-29Parse , and make xfy do what it shouldPeter Mikkelsen
2021-06-29Fix some parser errors, and accept clauses without a bodyPeter Mikkelsen
2021-06-29Add a term parser.Peter Mikkelsen
2021-06-28Initial commit. Start working on a new prolog implementation for 9front, now ↵Peter Mikkelsen
that I at least have a better understanding of what goes into a compiler :)