All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog and this project adheres to Semantic Versioning.
- (nothing to record here)
- Use Rbscmlex instead of built-in lexer. (#6)
- Use Rubasteme instead of built-in AST and parser. (#6)
- Fix #5: too old
required_ruby_version
.
- Re-write the parser and evaluator mechanism.
- Add tests for SchemeParser and Translator.
- Add a mechanism to replace comparison operator characters in
identifiers.
- e.g.
char<?
->char_lt?
- e.g.
- Add
char
:- add Rus3::Char class,
- modify Rus3::Parser::Lexer to accept a character literal,
- modify Rus3::Parser::SchemeParser to parse and translate a character literal,
- Add new error classes (CharRequiredError),
- Add tests around
char
.
- Add
vector
:- add Rus3::Vector class,
- modify Rus3::Parser::Lexer to accept a vector literal,
- modify Rus3::Parser::SchemeParser to parse and translate a vector literal,
- Add new error classes (VectorRequiredError and ExceedUpperLimitError),
- Add tests around
vector
.
- Modify Rus3::Parser::Lexer to convert "->" to "to",
- now, the Scheme identifier such "list->vector" is usable in the REPL
- Initial release:
- Rus3 can translate fundamental syntax of Scheme into Ruby.