『精霊の箱: チューリングマシンをめぐる冒険』に登場する「塔文字」の言語処理系の実装です。
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
bin
box
lib
test
.gitignore
.travis.yml
CODE_OF_CONDUCT.md
Gemfile
Guardfile
LICENSE.txt
README.md
Rakefile
split_box.gemspec

README.md

Build Status

『精霊の箱』に登場する「塔文字」の言語処理系のruby実装です。いくつかサンプルもboxディレクトリに置いております。

インストール

Gemfileに次の記述を追加してbundle installすればインストールできます。

gem 'split_box', github: 'nnabeyang/split_box'

実行方法

git cloneするかダウンロードして、main.rbを以下のようにして実行することができます。

富者の像と貧者の像

$./main.rb  box/rich_and_poor.sb "010110 "

文字列の比較

./main.rb  box/str_cmp.sb " 101|101 "

足し算

./main.rb  box/sum.sb  " 111+010 "

文字列のコピー

./main.rb  box/copy.sb  " 101|   "

設計図の生成

Graphvizがインストールされていてdotコマンドが使えるようになっていることが前提ですが、次のようにすると、imagesが作成され、そこにファイルに対応する設計図がpng形式で作成されます。

./main.rb -v <filepath1> <filepath2> ...

コードの書き方

split_boxが認識する言語は、命令(instruction)の列から成ります。1行1命令ですので、命令を追加するときは改行します。

<instruction1>
<instruction2>
<instruction3>
...

各命令はrubyの正規表現で書くと次のパターンに従っているものとします。

instruction_pattern = /#{sprintf "%{from_address}.%{input_char}%{replacement}%{direction_of_pointer}.%{to_address}", from_address: "\d+", input_char: ".", replacement: ".", direction_of_pointer: "(<-|->)", to_address: "\d+"}/