https://github.com/epiphone/sammal
Interpreter for a Scheme-ish language.
https://github.com/epiphone/sammal
coursework interpreter lisp-interpreter parser-combinators
Last synced: about 1 year ago
JSON representation
Interpreter for a Scheme-ish language.
- Host: GitHub
- URL: https://github.com/epiphone/sammal
- Owner: epiphone
- License: mit
- Created: 2017-03-18T13:09:07.000Z (over 9 years ago)
- Default Branch: master
- Last Pushed: 2017-08-08T15:41:02.000Z (almost 9 years ago)
- Last Synced: 2024-03-15T11:50:18.541Z (over 2 years ago)
- Topics: coursework, interpreter, lisp-interpreter, parser-combinators
- Language: Elixir
- Homepage: http://hexdocs.pm/sammal/
- Size: 6.54 MB
- Stars: 1
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# sammal
Interpreter for a Scheme-ish language.
## Docs
https://hexdocs.pm/sammal/
## Dependencies
- [Elixir >= 1.4](http://elixir-lang.org/install.html)
## Build
```bash
mix deps.get
mix escript.build
./sammal [-c "(some command)"] [-i] [./some_source_file.sammal]
# Examples:
./sammal -c "(def multiply (x y) (* x y)) (display (multiply 2 3))"
```
## Test
`mix test` to run tests, or `mix test.watch` to automatically run tests, optional type checks and linter on file changes.
## TODO
- [x] quoting
- [ ] fix tokenizing "\x\"y"
- [ ] file IO
- [ ] REPL
- [ ] handle empty after quote `x'`
- [x] error reporting
- [ ] quasiquote
- [ ] disallow special chars in symbols
- [ ] string interpolation
- [ ] range operations? `0..10`, `0..-1`, ...
- [ ] macros