ethowitz / sruby Goto Github PK
View Code? Open in Web Editor NEWAn increasingly less miniature implementation of Ruby in Scala
License: GNU General Public License v3.0
An increasingly less miniature implementation of Ruby in Scala
License: GNU General Public License v3.0
Be consistent about:
List.empty
over List()
KlassMap
with ConstantMap
, which would store the values of every constant (not just classes)Add hash literal syntax and core methods
branches:
only:
- master
Compose Either
and State
to handle errors as part of the state being passed in the evaluator monad
Also disallow throw
via wartremover
Also add raise/rescue support and some basic exceptions
Also:
InvocationWithImplicitReceiver
abstract syntaxWill improve Evaluator#evalInvocation
also
i.e. Add a top-level self called main
Clean up the parser by introducing nested functions/local variables to break up patterns and make things more readable.
Also look into:
e.g. MethodDef
should contain an IdentifierNode
instead of a scala symbol
this may involve creating RubyKlass
rather than doing mischief with option types (specifically the name: Option[Symbol]
thing we have right now). also add self
SyntaxTree
--> ASTree
EvaluationState
--> EvalState
Add array literal syntax and core methods
Build a DSL to make it easier to write ruby methods using abstract syntax. I don't know if this is actually a good idea or whether it would be overkill. We should research how other languages written in functional languages deal with predefined methods written in the host language.
In scala, we may be able to accomplish this by subclassing or composing core scala classes/methods with our AST classes
scala> import com.ethowitz.sruby.core.RubyNilClass
<console>:11: warning: Unused import
import com.ethowitz.sruby.core.RubyNilClass
^
error: No warnings can be incurred under -Xfatal-warnings.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.