これは何?
ほう?
コンパイラの自作方法を解説しているなんて、なかなか意欲的な記事じゃないか。どれどれ。
( ゚д゚) ポカーン・・・
(つд⊂)ゴシゴシ
(;゚д゚) ・・・
(つд⊂)ゴシゴシゴシ
_, ._
(;゚ Д゚) …!?
paiza.io はコンパイラ自作支援システムだ。いいね?
アッハイ
作ったやつ
よくある Brainf*ck コンパイラ(手抜き)です。
技術解説(言い訳タイム)
最初は ELF64 の実行可能ファイルを直接吐き出すコンパイラ作ろうかなって思ったんですよ。でも ELF フォーマット調べてたらこれめんどくせーなってなりました。
Rustなら elf crate とかあるんですが、 paiza.io で外部 crate は流石に使えないし。
という訳で、「Brainf*ck のソースコードから Rust のソースコード生成して後は rustc に任せちゃえ!」と手抜くことに相成りました。Rustを中間言語とするコンパイラと強弁すればOKです。実質 proc-macro と大差ない。
paiza.io は複数のファイルを扱えるので、 source.bf というファイルに Brainf*ck のソースコードを書いて、 そこから source.rs というファイルを生成します。後はrustcにぶん投げて、出来上がったものを実行するだけです。
ところで
「piaza.io で作らないと駄目なのでは?」
「知るかそんなサイト!!!」
-
元は https://agency-star.co.jp/column/+compiler でしたが削除されたようなので魚拓 ↩