Skip to content

Cassin01/rubyst

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Rubyst

License: MIT

A Ruby Interpreter written in Rust 🦄

対応している文法

Type
bool型 Bool
int型 Int
String Str
演算子
掛け算 +
足し算 -
掛け算 *
割り算 /
余り %
乗算 **
比較演算子
イコール ==
大なりイコール >=
小なりイコール <=
大なり >
小なり <

Functions

p

p("Hello World!")

if

i = 10
if i == 10
  i = i + 1
else
  i = i - 1
end
p(i)

while

i = 10
while i > 0
  p(i)
  i = i - 1
end

begin

i = 10
begin
  p(i)
  i = i - 1
end while i > 0

case

i = 1
case i
  when 0
    p("zero")
  when 1
    p("one")
  when 2
    p("two")
  else
    p("others")
end

開発指針

コードはできるだけ綺麗にするけど開発の速さのためには妥協もする

このrubystインタプリタで用いられる抽象構文木において

望ましいこと

tree.rootがType::Nilであるときtree.leftがOption::Noneであること

→ 実行速度が遅くなるため

アンチパターン

tree.rootがType::Nilであるときtree.rightがOption::Noneでないこと

→ 複雑度が上がり、開発者が潜在的なバグを予測できなくなるため

参考

遠藤侑介 RubyでつくるRuby ラムダノート株式会社

About

A Ruby Interpreter written in Rust 🦄

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published