LoginSignup
11
2

More than 5 years have passed since last update.

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

Last updated at Posted at 2018-07-14

概要

バーチャル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スタンプを押すだけでコーディングができるように開発環境を作れるかもしれません。やり方がまだわからないですが。。。
11
2
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
11
2