Rbsiev
SICP evaluator in Ruby.
Or, Ruby で書いた SICP の evaluator.
It is intended to be a part of Scheme implementation written in Ruby.
Installation
Execute:
$ gem install rbsiev
Usage
Run the simple REPL as:
$ rbsiev
Then, you can input Scheme program.
Supported Syntax
In 0.1.0, the evaluator mostly corresponds to the one in SICP 4.1.1 - 4.1.6.
See the wiki page for more information about the progress of implementing.
Literals
- boolean value (
#f
and#t
), - an empty list (
()
), - a string enclosing with double-quotations, such
"hoge"
- numbers (integer, real, rational, and complex)
Primitive procedures
- arithmetic operators (
+
,-
,*
,/
,%
), - comparison operators (
=
,<
,>
,<=
,>=
) cons
,car
,cdr
null?
,pair?
,list?
,number?
list
,append
write
,display
Syntax to be evaluated
- lambda expression
- such
(lambda (n) (+ n 1))
- such
- procedure application
- such
(foo 1)
- such
- conditional expression
if
,cond
,when
,unless
- logical test
and
,or
- assignment
set!
- definition
define
- sequence
begin
- local bindings
let
,let*
,letrec
,letrec*
- loop
do
Related projects
- Lexical Analyzer for Scheme - mnbi/rbscmlex
- Abstract Syntax Tree and Syntax Analyzer for Scheme - mnbi/rubasteme
- Ruby wit Syntax Sugar of Scheme - mnbi/rus3
- A small Scheme implementation in Ruby - mnbi/rubeme
Development
After checking out the repo, run bin/setup
to install dependencies. Then, run rake test
to run the tests. You can also run bin/console
for an interactive prompt that will allow you to experiment.
To install this gem onto your local machine, run bundle exec rake install
. To release a new version, update the version number in version.rb
, and then run bundle exec rake release
, which will create a git tag for the version, push git commits and tags, and push the .gem
file to rubygems.org.
Contributing
Bug reports and pull requests are welcome on GitHub at https://github.com/mnbi/rbsiev.
License
The gem is available as open source under the terms of the MIT License.