Edited at

ミライアカリちゃんの独自プログラミング言語Akariを作ってみた【Brainf*ck】

More than 1 year has passed since last update.


概要

バーチャルYoutuber ミライアカリ ちゃんの独自プログラミング言語Akariを作ってみたという記事です。

r-fxxkというライブラリを使って、Brainf*ckの派生言語という形で実装してみました。素晴らしいライブラリをありがとうございます。制作者様にはこの場を借りてお礼申し上げます。

Brainf*ck って何?という方はこちらをご参照ください。


経緯


Akari言語の仕様

Akari命令
Brainf*ck命令
動作

ピロリンッ
>
ポインタをインクリメントする。

悪い子ちゃん
<
ポインタをデクリメントする。

ハロー!
+
ポインタが指す値をインクリメントする。

ヤミ
-
ポインタが指す値をデクリメントする。

あ、カラスだ
.
ポインタが指す値を出力に書き出す。

おけまる
,
入力から1バイト読み込んで、ポインタが指す先に代入する。

いきま→しょう!
[
ポインタが指す値が0なら、対応する  の直後にジャンプする。


]
ポインタが指す値が0でないなら、対応する いきま→しょう! にジャンプする。

LINEスタンプのセリフを使わせていただきました。


サンプルコード

とりあえずHello Worldのコードはこんな感じです。HelloWorld.akariというファイルを作って、以下をコピペしてください。

ハロー!ハロー!ハロー!ハロー!ハロー!ハロー!ハロー!ハロー!ハロー!

いきま→しょう!ピロリンッハロー!ハロー!ハロー!ハロー!ハロー!ハロー!
ハロー!ハロー!ピロリンッハロー!ハロー!ハロー!ハロー!ハロー!ハロー!
ハロー!ハロー!ハロー!ハロー!ハロー!ピロリンッハロー!ハロー!ハロー!
ハロー!ハロー!悪い子ちゃん悪い子ちゃん悪い子ちゃんヤミ卍ピロリンッ
あ、カラスだピロリンッハロー!ハロー!あ、カラスだハロー!ハロー!ハロー!
ハロー!ハロー!ハロー!ハロー!あ、カラスだあ、カラスだハロー!ハロー!
ハロー!あ、カラスだピロリンッヤミあ、カラスだヤミヤミヤミヤミヤミヤミヤミ
ヤミヤミヤミヤミヤミあ、カラスだ悪い子ちゃんハロー!ハロー!ハロー!
ハロー!ハロー!ハロー!ハロー!ハロー!あ、カラスだヤミヤミヤミヤミヤミ
ヤミヤミヤミあ、カラスだハロー!ハロー!ハロー!あ、カラスだヤミヤミヤミ
ヤミヤミヤミあ、カラスだヤミヤミヤミヤミヤミヤミヤミヤミあ、カラスだ
ピロリンッハロー!あ、カラスだ


r-fxxkで実装

先ほど決めた仕様をr-fxxkに設定します。akari.rbというファイルを作って、以下をコピペしてください。これだけでインタプリタが完成します。

Encoding.default_external = "UTF-8"

require 'r-fxxk'

# Akari言語の定義
class Akari < Brainfuck
nxt "ピロリンッ"
inc "ハロー!"
prv "悪い子ちゃん"
dec "ヤミ"
opn "いきま→しょう!"
cls "卍"
put "あ、カラスだ"
get "おけまる"
end

# 第一引数からソースコードを読み込む
program = ARGF.read

# ソースコードを表示
# puts program

# 実行して結果を表示
puts Akari.new.fuck(program)


サンプルコードの実行

先ほどのHelloWorld.akariを実行してみます。実行にはRubyが必要です。

$ ruby akari.rb HelloWorld.akari

Hello, world!

ちゃんと Hello, world!と表示されました!


まとめ


  • ミライアカリちゃんのLINEスタンプを記念して独自言語を作ってみました。

  • LINEスタンプにあるセリフを使ってコマンドを作ったから、LINEスタンプを押すだけでコーディングができるように開発環境を作れるかもしれません。やり方がまだわからないですが。。。