Ariel AdC 11日目 ぷろぐらみんぐ言語ありえる

はじめに

本記事は Ariel Advent Calendar 2011 : ATND の11日目です。12日にオーバーランしてますが、11日目です。ごめんなさい。

ぷろぐらみんぐ言語ありえる

まずは定番のHello worldをありえるで書いてみましょう。

ありえるありありえるありありえるありありえるありありえるあり
ありえるありありえるありありえるありありえるありえるえるあり
ありありありありえるありありえるありありえるありありえるあり
ありえるありありえるありありえるありありえるありありありあり
ありえるありありえるありありえるありありえるありありえるあり
ありえるありありえるありありえるありありえるありありえるあり
ありえるありありありありありえるありありえるありありえるあり
ありえるありありえるありありありえるありありえるありありえる
ありえるえるえるえるえるありありありえるありありありありあり
ありえるありありえるありえるありありありえるありありえるあり
ありえるありありえるありありえるありありえるありありえるあり
えるありありえるありありありえるありありえるありありえるあり
えるありありありありありありえるえるえるありありありえるえる
ありえるえるありえるえるありえるえるありえるえるありえるえる
ありえるえるありえるえるありえるえるありえるえるありえるえる
ありえるえるえるありありありありえるありえるありありえるあり
ありえるありありえるありありえるありありえるありありえるあり
ありえるありえるありありありえるえるありえるえるありえるえる
ありえるえるありえるえるありえるえるありえるえるありえるえる
えるありありありえるありありえるありありえるありえるありあり
ありえるえるありえるえるありえるえるありえるえるありえるえる
ありえるえるえるありありありえるえるありえるえるありえるえる
ありえるえるありえるえるありえるえるありえるえるありえるえる
えるありありありありありありえるありえるありあり

…、やたら長いですね。

ありえるはBrainfuckの方言の1つです。Brainfuckでは><+_.,[]の8記号で表現する命令列を"あり"と"える"だけで表現している為、すごく長くなります。命令マッピングは以下の通りです。

> ありありあり
ありありえる
+ ありえるあり
- ありえるえる
. えるありあり
, えるありえる
[ えるえるあり
] えるえるえる

ありえるはすごく長い言語なので手で書くのは疲れますね(大体左右交互打鍵なので高速には入力できると思いますが)。なので、書く時はBrainfuckから機械的に変換しましょう。ありえるなので当然Emacsです。選択されたregion内をありえるに変換するEmacs Lispを書いたので、らくちんですね。

ソースコード


(require 'cl)
(defun bf-to-ariel (start end)
  (interactive "r")
  (loop with src = (buffer-substring-no-properties start end)
        for (c rep) in '((">" "ありありあり")
                         ("<" "ありありえる")
                         ("+" "ありえるあり")
                         ("-" "ありえるえる")
                         ("." "えるありあり")
                         ("," "えるありえる")
                         ("[" "えるえるあり")
                         ("]" "えるえるえる"))
        for re = (regexp-quote c)
        do (setf src (replace-regexp-in-string re rep src))
        finally (save-excursion
                  (goto-char start)
                  (delete-region start end)
                  (insert src))))