2020-08-01から1ヶ月間の記事一覧

vm2gol v2 (48) 変数宣言のコード生成処理の改善など

目次ページに戻る / 前 / 次 前回からの差分をまとめて見る Java版 を書いているときに codegen_stmts() の微妙なところに気付いてしまいました。 def codegen_stmts(fn_arg_names, lvar_names, stmts) alines = [] stmts.each do |stmt| stmt_head, *stmt_r…

Mini Ruccola(vm2gol-v2)移植一覧

機能を減らしてハードルを下げまくった、初心者・入門者(=自分)向けの、かんたん・素朴で割といいかげんな自作言語のコンパイラ Mini Ruccola(vm2gol-v2) の移植です。 移植元の Ruby版のコンパイラ部分だけだと 1000行くらい、という素朴さ。 ノリとし…

素朴な自作言語のコンパイラをJavaに移植した

移植一覧に戻る Java で書いてみました。やっつけなので汚いです。ライフゲームが動いたのでヨシ、というレベルのものです。 github.com 移植元 memo88.hatenablog.com ベースになっているバージョン: tag:47 のあたり メモ アセンブラ・VM は移植対象から外…

vm2gol v2 (47) 引数のパースの厳密化など

目次ページに戻る / 前 / 次 前回からの差分をまとめて見る パーサが結構いいかげんなので、直します。 引数のパースの厳密化 一番適当なのが引数のパースです。 現状だと my_func(1 2 a) のように区切りのカンマがなくても文法エラーになりません。 という…

kairo-gokko (39) コンパイル時間短縮のために data.rb をスリム化

目次ページに戻る require_remote にかかる時間がさすがに長すぎるので、なんとかしたい……。 開発効率的にも辛いですし、他の人に見てもらうときもなるべく待たせないようにしたい。 というわけで調べてみました。 ネックになっているのは data.rb のコンパ…

素朴な自作言語のコンパイラをDartに移植した

移植一覧に戻る Dart で書いてみました。やっつけなので汚いです。Dart よく知らないけどライフゲームが動いたのでヨシ、というレベルのものです。 github.com 移植元 memo88.hatenablog.com ベースになっているバージョン: tag:46 のあたり 追記 2021-03-21…

vm2gol v2 (46) リファクタリング(主にコード生成器)

目次ページに戻る / 前 / 次 前回からの差分をまとめて見る コード生成器で気になっていた部分を修正しました。 codegen_stmts() まわりの整理 修正前の状況を見てみましょう。 呼び出しの関係が次のようになっています。 呼び出す側 => 呼び出される側 code…

Pythonでシンプルな自作言語のコンパイラを書いた

移植一覧に戻る Python で書いてみました。やっつけなので汚いです。Python よく知らないけどライフゲームが動いたのでヨシ、という程度の雑なものです。 github.com 移植元 github.com <自作言語処理系(Ruby版)の説明用テンプレ> 自分がコンパイラ実装…

vm2gol v2 (45) リファクタリング(主にVM)

目次ページに戻る / 前 / 次 前回からの差分をまとめて見る 今回は(主に VM の)リファクタリングです。 テストが用意できたので、安心してサクサクと進められます。 Rubocop 関連 Rubocop の設定が古くなってると言われたので設定を修正して、新たに指摘さ…

vm2gol v2 (44) テストの追加

目次ページに戻る / 前 / 次 前回からの差分をまとめて見る 残りのテストをまとめて追加しました。 アセンブラ・コード生成器・パーサについては ひとまずライフゲームのコードを与えて出力が一致するか検証するようにしました。 これで、パース〜アセンブル…

きしださんのかわいいリレーショナルデータベースをRubyで写経した

nowokay.hatenablog.com きしださんのかわいいリレーショナルデータベースの最初のバージョンを写経してみました。 この記事、もう8年前なんですね。ついこないだ読んだような気がしていましたが……。 簡単なものだったら自作できないかなと以前から思ってい…

素朴な自作言語のコンパイラをTypeScript(Deno)に移植した

移植一覧に戻る TypeScript 入門というか、とりあえず何か書いて慣れようと思って書いてみました。やっつけなので汚いです。TypeScript まだよく分からないけどなんか動いたのでヨシ、というレベルのものです。 github.com 移植元 memo88.hatenablog.com <…

red-arrow: Arrow::Tableのデータを組み立てる

とりあえず最低限の流れが知りたかったので、int32 だけの簡単なデータでやってみました。 require "arrow" # -------------------------------- # 列1 のデータを用意 builder = Arrow::Int32ArrayBuilder.new builder.append(1) builder.append(2) array1 …

consごっこ (2)

前 consのデータをメモリに置くとどうなるのか、というのを軽く試してみるつもりだったのが、 もうちょっと育ってしまいました。 ※ C言語云々と言っているところはかなりうろ覚えで適当です。だいぶ忘れてます……。 ※ また、既存のよく知られた何かに準拠して…

consごっこ

次 表面だけ見ると Ruby の Array、 Hash っぽいけど中身は cons セル、というものを書いてみました。 試してみたくなって、なんとなく書いてみた、という感じのものです。 cons セルさえあれば基本的なデータ構造が作れてなんとかなるんだな、という感触が…

kairo-gokko (38-2) タイムチャートの改善 / FPSの表示

目次ページに戻る タイムチャートの表示によるパフォーマンス劣化をなんとかします。 FPSを表示 まずは定石通りに計測から始めようと思いますが、 ここはお手軽に FPS を見て確認するだけで済ませます。 今回はそれで十分そうなので。 FPS は Window.real_fp…