LoginSignup
54
14

More than 3 years have passed since last update.

ヤッター!paiza.ioでコンパイラできたよー!\(^o^)/

Last updated at Posted at 2020-05-27

これは何?

先日、こんな記事を見ました1

image.png

ほう?

image.png

コンパイラの自作方法を解説しているなんて、なかなか意欲的な記事じゃないか。どれどれ。

image.png

( ゚д゚) ポカーン・・・

(つд⊂)ゴシゴシ

(;゚д゚) ・・・

(つд⊂)ゴシゴシゴシ
  _, ._
(;゚ Д゚) …!?

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 で作らないと駄目なのでは?」
「知るかそんなサイト!!!」


  1. 元は https://agency-star.co.jp/column/+compiler でしたが削除されたようなので魚拓 

54
14
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
54
14