CuLisp Interpreter
5 Nov 2017
A lisp-like expression evaluator.
Background
This started as a project where I wanted to write my own Lisp-like language. So far it's only able to evaluate simple expressions.
Building
- Run
make
Usage
Typing ./build/culisp
will spawn a REPL as shown below:
culisp>
To run the tests type ./build/culisp test
Examples
Adding two numbers together
(add 1 2)
Nesting function calls
(add (minus 10 5) 5)
If statement
(if (equal 1 2) (add 1 2) (minus 1 2))
If statement returning function name
((if (equal 1 1) add minus) 100 10)
Functions
(add <int> <int>)
returns<int>
(minus <int> <int>)
returns<int>
(multiply <int> <int>)
returns<int>
(equal <a> <a>)
returns<bool>
(if <bool> <a> <a>)
returns<a>
(id <a>)
returns<a>
Issues
- The program is incredibly prone to memory leaks
- CuLisp isn't actually a complete language since variables and functions can't be defined
License
MIT