読者です 読者をやめる 読者になる 読者になる

BrainFu*kインタプリタを書いた

この記事は#一人GWハッカソン 5/3の記事です

今日のテーマはなんかのインタプリタを作るです

最初は自分で言語作る気満々でした

11:00~12:00 言語仕様の妄想

  • 四則演算ができる
  • スタックが用意されていて自由に使える
  • 変数は予め定められた8つ
  • 配列なんてなかった
  • 標準で用意されている関数はprintのみ
  • if,while,breakが使える
  • for文なんてなかった

12:30~13:55

AbemaTVで「変態王子と笑わない猫。」一挙放送やってたので見ました。
脳が溶けました。

13:00 ~ 14:00 感覚でコードを書き始める

javascriptで作った四則演算のプログラムを参考にprintとかを実装し始めるものの、
途中でわけわからなくなって死。

14:00 ~ 調査

流石に感覚で書くには無理があると感じ、ネットの情報を漁り始める。
一般的なインタプリタでは字句解析と構文解析というものが行われているらしい。
そして構文解析によって生成された構文木を元にプログラムが実行される。
なるほどなるほど。構文木とかどうやって実装したら良いのか全くわからないんですけど…ウケる…

15:00~16:00 (:3 」∠ )

17:00~ BrainがFu*ck

結局何もできてねーなとか思いながら微妙な気分になる。
何も成果物が無いのは流石にアレなので最終手段として考えていたBrainFu*ckを書き始める…

BrainFuckの実装は[,]さえ実装してしまえば後は簡単だった。

BrainFu*k f:id:akkkix:20170504084158j:plain

なんの捻りもないただのBrainFuc*kが完成した。

反省…

昔四則演算のプログラム書いたことあるしいけると思ってた 実装力がなくてつらいなぁ…
GW後半らへんにネタ切れになったらまた挑戦したい…

参考:

Brainfuck - Wikipedia

http://www.hpcs.cs.tsukuba.ac.jp/~msato/lecture-note/comp-lecture/

プログラミング言語を作る

四則演算(昔書いたやつ。再帰下降構文解析っていうらしい。):

sisokuenzan