Home

Awesome

Build Status

Stutter - Lisp, from scratch, in C

screenshot

stutter is an educational Lisp interpreter implementation in C, written entirely from scratch, not using any libraries (with the notable exception of editline to maintain my sanity).

In other words, stutter is a practical exercise in a broad set of CS topics including

All of it is implemented in one of the most bare-bones, down-to-earth (and unforgiving) languages out there: C99.

stutter is a work in progress (and will be, for the forseeable future). See the tests to get an idea of what the language is already capable of.

The Rules

Obviously, in modern our modern times, writing a Lisp interpreter is not as challenging as it used to be since there are a lot of libraries that can help us to achieve that goal. Hence, two rules:

  1. Write everything from scratch.
  2. Do not question the rules.

Getting started

Clone the repo and its submodules (submodules because the garbarge collector is in a separate repo).

$ git clone --recursive git@github.com:mkirchner/stutter.git
$ cd stutter
$ make && make test

This should work on a Mac with a recent clang. No efforts to make it portable (yet).

Next steps