https://github.com/mihaiolteanu/metacircular
SICP's metacircular evaluator in C
https://github.com/mihaiolteanu/metacircular
evaluator intepreter lisp metacircular scheme sicp
Last synced: about 1 month ago
JSON representation
SICP's metacircular evaluator in C
- Host: GitHub
- URL: https://github.com/mihaiolteanu/metacircular
- Owner: mihaiolteanu
- Created: 2018-03-22T19:20:21.000Z (about 7 years ago)
- Default Branch: master
- Last Pushed: 2019-12-08T19:03:54.000Z (over 5 years ago)
- Last Synced: 2025-04-04T12:47:33.514Z (about 1 month ago)
- Topics: evaluator, intepreter, lisp, metacircular, scheme, sicp
- Language: C
- Homepage:
- Size: 92.8 KB
- Stars: 2
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
This is a Scheme interpreter written in C. The name of the project comes from
SICP's [metacircular evaluator](https://mitpress.mit.edu/sites/default/files/sicp/full-text/sicp/book/node76.html). Of course, being written in C means it is no
longer metacircular, but the approach in developing the interpreter is taken
from SICP's eval/apply loop. The main motivation for writing and studying this
project is in better understanding SICP, Scheme and interpreters/compilers in
general. Regarded as such, this project is/was a success.Another additional motivation for starting this project was that of using and
playing with [modern CMake](https://pabloariasal.github.io/2018/02/19/its-time-to-do-cmake-right/). And if you're starting a new C project that will
suffer a lot of bug-fixing and redesigning, as writing a compiler or interpreter
will surely entail, why not use a mocking library ([cmock](http://www.throwtheswitch.org/cmock)) to generate test
mocks and a testing library ([unity](http://www.throwtheswitch.org/unity)) to run all the tests in one go? So this
project is also an example on how to set these up and used them so that you can
code with more confidence.