Logic Programming
My book, An introduction to logic programming through Prolog was published by Prentice-Hall in 1996, but is long out of print. The book gives a simple introduction to the theory of logic programming, and also describes in detail an implementation of a small Prolog dialect called picoProlog by an interpreter written in Pascal.
I have reclaimed the copyright, and I am delighted to make available here:
- The full text of the book.
- Source code for the Prolog interpreter.
The interpreter source is written in a minimal dialect of Pascal, avoiding many features including pointers, but using macros to overcome some of Pascal's limitations, in a style inspired by Kernighan and Plauger's book Software tools in Pascal. It comes with a translator from the Pascal dialect into C that can be used to build the interpreter and also source for the macro processor that is needed.
To build the interpreter on a Linux machine, just extract the tar file and type make. The building happens in several stages:
- First, the Pascal-to-C translator
ptcis built from C source, including a lexer and parser written with lex and yacc. The file README gives some details of the very restricted Pascal subset accepted by this translator. - Next,
ptcis used to build the macro processorppp. - Finally, the picoProlog interpreter is built from the source code in the file
pprolog.xby first expanding macros usingpppto obtain a filepprolog.p, then translating to C withptc, and lastly compiling the C code.
Text and software copyright © J. M. Spivey, 1996, 2002, 2010.
Please note that I have not placed the copyright of this work in the public domain. Nevertheless, I freely grant permission to make copies of the whole work for any purpose except direct commercial gain. I retain all other rights, including but not limited to the right to make translations and derivative works, and the right to make extracts and copies of parts of the work. Fair quotation is permitted according to usual scholarly conventions.