- Basic scheme interpreter
- Written in Haskell
- Strict testing policy
- Continuous integration running tests on every Pull Request
- Over 100 Unit tests and close to 50% coverage
- Close to 20 Integration tests
- Abstract Syntax Tree and Concrete Parse Tree implementation
- Standard input reading
- An ABNF syntax description
- An ABNF syntax description for the "compiled" code
- Infix notations for operators and custom functions
- Atoms
- Signed Integers
- Symbol
- Boolean type
- Function execution
- Function definition
- Named Functions
- Lambda Functions
- Variable definition
- Conditional expressions
In addition to these basic features, our interpreter also implements the following builtins :
- println
- div
- mod
- *
- -
- +
- <
- <=
- >
- >=
- eq?
You can also enter into an interactive session by running :
./glados -i
or
./glados --interactive
Install cabal by installing GHCUP or another method described on the Haskell Website.
cabal update;
Also install the following VSCode/Codium/CodeOSS extensions:
hoovercj.haskell-linter
justusadam.language-haskell
haskell.haskell
cabal run glados -- file.scm;
or
make ARGS="file.scm"
In order to see coloured output and no coverage when running the tests, please run the tests with one of the following commands:
cabal run test
make test
- Fully featured REPL
- Exception stack tracing
- Exception line tracing