An interpreter for the Amoeba programming language. Written from scratch in Go with no dependencies π
- C-like syntax
- variables (integers, booleans, strings, arrays, objects)
- arithmetic expressions
- first-class and higher-order functions
- closures
- builtin functions:
- amoeba(): prints out awesome ascii art
- len(ARRAY or STRING): returns length of string or array
- push(ARRAY, ANY): adds new item to array (does not mutate)
- first(ARRAY): returns first item in array
- rest(ARRAY): returns all but first item in array
- last(ARRAY): returns last item in array
- print(ANY, ANY, ...): prints out to the console
git clone https://github.com/ASteinheiser/amoeba-interpreter.git
cd amoeba-interpreter
./amoeba-interpreter -file=amoeba-test-program.txt
./amoeba-interpreter
- Install Go
git clone https://github.com/ASteinheiser/amoeba-interpreter.git
cd amoeba-interpreter
go run main.go
You can run the tests for a sub-module individually as long as it has a *_test.go
file:
go test ./ast/
go test ./lexer/
go test ./parser/
go test ./evaluator/
OR you can run all the tests at once:
./run-tests.sh
- add <= and >= operators
- add postfix operators (such as
++
) - prettier printing of function, array, and hash values
- enhance error messages with line number and file name