2016-09-01から1ヶ月間の記事一覧

連鎖性言語を作る5

ループで悩んでいたのだが、とりあえずなるべく簡単に実装するということで、こんな感じにした。 :loop => ->{quot=@stack.pop;loop{self.run(quot);if @break_flg then @break_flg=false;break;end}}, :break => ->{@break_flg=true}, VMはこんな感じ。 def…

連鎖性言語を作る4

色々と調べていたらRubyでForthを作った人のブログ(Forthを作るのじゃ | TECHSCORE BLOG)があった。この記事では作っているのがForthなのでQuotationは無く、シンプルな作りによりParserも無いため、コロン定義は例のコンパイルモード/実行モード切り替え方…

連鎖性言語を作る3

現在のオレ言語の実装にはひとつ問題点がある。それは、数字のリテラルをRubyのオブジェクトに変換して保持し、計算はRubyのメソッドを呼んでいるところだ。それにより挙動がRubyの仕様に引きずられる。これは文字列についても同様であり、Rubyの文字列には+…

連鎖性言語を作る2

連鎖性言語というのは英語でConcatenative Languageと言って、要するに連結、繋げて書く言語のことである。ま、左から右に繋がっているので。対比される言葉は適用型言語(Applicative Language)。CとかRuby、関数型言語など、だいたいほとんどの言語は適用型…

連鎖性言語を作る

スタック指向言語、とか、連鎖性言語、などと呼ばれる言語がある。有名どころではForthやPostScriptあたりで、かなり古くから存在していて、最近ではFactorといった関数オブジェクトを扱える実用的なものまである。 基本的なコードの例としては、 1 2 + prin…

DXRuby1.4.5(´・ω(´・ω・`)

SEGVする不具合を修正してリリースした。 踏む人が現れると申し訳ないので修正後は急いでリリースしたほうがよいという知見が得られた(当たり前DXRuby最近なにもしてないのかと言うと、実際のところ他の何かをしているわけでもなくここんとこ全面的に何もし…