matsud224 / wamcompiler

Prolog implementation based on Warren's abstract machine
The Unlicense
42 stars 6 forks source link
common-lisp compiler prolog wam warren-abstract-machine

README

This is a prolog compiler written in Common Lisp which compiles prolog code to bytecode of Warren's abstract machine (WAM).

I recommend using Steel Bank Common Lisp (SBCL). To start REPL, eval the following expression:

(load "wamcompiler.lisp")
(repl)

Input ';' to show the next solution, 'y' to stop finding solutions, or 'a' to show all solutions.

To show the compiled bytecode, eval the following expression:

(show-wamcode "predicate-name" predicate-arity)

An article of this program (in Japanese): 「すごいPrologつくって学ぼう?!」 pp.23-37 http://www.kitcc.org/share/lime/lime56.pdf

References