vm2gol v2 (51) 機械語コードのフォーマットを固定長風に変更

目次ページに戻る / 前 / 次 前回からの差分をまとめて見る これまで機械語コードのフォーマットはこのような YAML ファイルにしていました。 (以下便宜的に「可変長風」と呼びます) --- - call - 1029 - exit - label - vram_set - push - bp ... これを…

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

移植一覧に戻る やっつけなので汚いです。ライフゲームのコンパイルが通ったのでヨシ、というレベルのものです。 Zig言語(ziglang)を触り始めて1週間くらいの人が雑に書いたものですので、「お手本にできそうな Zig のコード」「かっこいい Zig のコード」…

Ruby/Racc: パース時のスタックの動きをFlameGraphっぽくビジュアライズする

Qiita の方に書きました。 qiita.com

JRubyでLibreOffice Calcのfodsファイルを読み書きするサンプル 2021

Qiita の方に書きました。 qiita.com

JavaでLibreOffice Calcのfodsファイルを読み書きするサンプル 2021

Qiita の方に書きました。 qiita.com

memo88の2020年ブックマークランキング

blog.sushi.money やってみました。調べてないけど9割方セルクマ ブクマしてくださった方、ありがとうございます。 memo88の2020年ブックマークランキングベスト24(累計30ブックマーク) # タイトル 1位 きしださんのかわいいリレーショナルデータベースをRu…

DockerでLibreOffice Basicマクロを実行する

Qiita の方に書きました。 qiita.com

Ruby+PyCall.rbでLibreOffice Calcのオートメーションをやってみた(Ubuntu 18.04)

Qiita の方に書きました。 qiita.com

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

移植一覧に戻る Qiita の方に書きました。 qiita.com

LibreOffice BasicでLispインタプリタ(mal)を書いた

Qiita の方に書きました。 qiita.com

Ruby/Racc: パースに失敗した位置(行、桁)を得る

Qiita の方に書きました。 qiita.com

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

移植一覧に戻る やっつけなので汚いです。ライフゲームのコンパイルが通ったのでヨシ、というレベルのものです。 github.com 移植元 memo88.hatenablog.com ベースになっているバージョン: tag:50 のあたり (2021-06-20 追記) ステップ60 の修正まで反映し…

Zig: コマンドライン引数を受け取って整数(i32)に変換する

Zig

Zig 昨日触りはじめたばかりでまだぜんぜん分かってません。 まずは std.os.argv でコマンドライン引数を取得します。 pkv は確認用のユーティリティ関数で、 print key value のつもり。 // arg_to_i_v1.zig const std = @import("std"); fn pkv(k: []const…

Zig: 1バイトごとに読み書きするだけのcatコマンドを書いてみた

Zig

Zig(ziglang) で標準入力から1バイト読んで標準出力に書くのを繰り返すだけの素朴な cat コマンドを書いてみました。 Zig はさっき触り始めたばかりで右も左も分からない状態です。 const std = @import("std"); pub fn main() !void { const outstream = …

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

Qiita に引っ越しました。 qiita.com

vm2gol v2 (50) コード生成処理の変更にあわせたパーサの修正など

目次ページに戻る / 前 / 次 前回からの差分をまとめて見る 変数宣言周りの修正(パーサ編) 第48回 変数宣言のコード生成処理の改善など で変数宣言まわりを変更したときは特に考えてなかったんですが、これはパーサも合わせておいた方が良さそうに思えます…

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

移植まとめに戻る やっつけなので汚いです。ライフゲームのコンパイルが通ったのでヨシ、というレベルのものです。 github.com C♭は書籍 『ふつうのコンパイラをつくろう』の題材として作られた、C によく似た言語です。コンパイラ cbc は Java製。 移植元 m…

「ふつうのコンパイラをつくろう」のcbcをUbuntu18.04(64bit)でビルドする

(2016-03-06) ふつうのコンパイラをつくろう Ubuntu64bit : 勉強日誌 (2020-07-23) 「ふつうのコンパイラをつくろう」のcbcをJava8以降+64bitで動かす - Qiita こちらの2つの記事を参考にさせてもらいました。ありがとうございます。以下の内容はこれらの記…

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

移植まとめに戻る Qiita に引っ越しました qiita.com

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

移植一覧に戻る 20年ぶりくらいにC言語のコードを書きました。 かなり忘れてます。 やっつけなので汚いです。ライフゲームのコンパイルが通ったのでヨシ、というレベルのものです。 github.com 移植元 memo88.hatenablog.com ベースになっているバージョン: …

vm2gol v2 (49) codegen_case を移植しやすいように変更

目次ページに戻る / 前 / 次 前回からの差分をまとめて見る まずはしょぼいミスを修正……。 --- a/vgparser.rb +++ b/vgparser.rb @@ -478,7 +478,7 @@ if $PROGRAM_NAME == __FILE__ begin tree = parser.parse() - rescue ParseError => e + rescue Parser:…

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

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

vm2gol-v2 移植まとめ

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

素朴な自作言語のコンパイラを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 移植元 以前作ったこれです。コンパイラ部分だけだと1000行くらいという素朴さ。 Rubyでオ…

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

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