Brainf*ck の派生言語作成ツール orenono gem で「デスマーチ言語」を作ってみる
概要
Brainf*ck の派生言語作成ツール orenono gem で「デスマーチ言語」を作ってみます。
orenono gem については下記記事参照。
Ruby で Brainf*ck の派生言語を作成するための gem 『orenono』を作成してみた
前提
orenono gem をインストール済み
文法定義
orenono init で Orenonofile を生成し、中身を編集して文法を定義します。
- Orenonofile を生成する
$ orenono i
$ ls Orenonofile
Orenonofile
- Orenonofile を編集する
# encoding: utf-8
increment "1時間残業追加"
decrement "1時間サービス残業"
start_loop "勤務開始"
end_loop "勤務終了"
next_cursol "次のタスク"
previous_cursol "前のタスク"
display "納品"
read "要件追加"
デスマーチ言語 プログラム
hello_world.bf
1時間残業追加1時間残業追加1時間残業追加1時間残業追加1時間残業追加
1時間残業追加1時間残業追加1時間残業追加1時間残業追加
勤務開始
次のタスク
1時間残業追加1時間残業追加1時間残業追加1時間残業追加1時間残業追加
1時間残業追加1時間残業追加1時間残業追加
次のタスク
1時間残業追加1時間残業追加1時間残業追加1時間残業追加1時間残業追加
1時間残業追加1時間残業追加1時間残業追加1時間残業追加1時間残業追加
1時間残業追加
次のタスク
1時間残業追加1時間残業追加1時間残業追加1時間残業追加1時間残業追加
前のタスク
前のタスク
前のタスク
1時間サービス残業
勤務終了
次のタスク
納品 # => H
次のタスク
1時間残業追加1時間残業追加
納品 # => e
1時間残業追加1時間残業追加1時間残業追加1時間残業追加1時間残業追加
1時間残業追加1時間残業追加
納品 # => l
納品 # => l
1時間残業追加1時間残業追加1時間残業追加
納品 # => o
次のタスク
1時間サービス残業
納品 # => ,
1時間サービス残業1時間サービス残業1時間サービス残業1時間サービス残業1時間サービス残業
1時間サービス残業1時間サービス残業1時間サービス残業1時間サービス残業1時間サービス残業
1時間サービス残業1時間サービス残業
納品 # => space
前のタスク
1時間残業追加1時間残業追加1時間残業追加1時間残業追加1時間残業追加
1時間残業追加1時間残業追加1時間残業追加
納品 # => w
1時間サービス残業1時間サービス残業1時間サービス残業1時間サービス残業1時間サービス残業
1時間サービス残業1時間サービス残業1時間サービス残業
納品 # => o
1時間残業追加1時間残業追加1時間残業追加
納品 # => r
1時間サービス残業1時間サービス残業1時間サービス残業1時間サービス残業1時間サービス残業
1時間サービス残業
納品 # => l
1時間サービス残業1時間サービス残業1時間サービス残業1時間サービス残業1時間サービス残業
1時間サービス残業1時間サービス残業1時間サービス残業
納品 # => d
次のタスク
1時間残業追加
納品 # => !
- インデントは読みやすさのために追加しているだけで、処理には不要です。
- 8つの用語以外は無視されるので、コメント扱いになっています。
#=> H
などはコメント。
実行結果
$ orenono e hello_world.bf
Hello, world!
参考
サンプルと等価な Brainf*ck のソースコード
+++++++++[>++++++++>+++++++++++>+++++<<<-]>.>++.+++++++..+++.>-.
------------.<++++++++.--------.+++.------.--------.>+.
orenonoスライドショー