2007-09-27
■ [ruby][prog] プログラミング言語「ず」を公開しました
先日の言語開発合宿で製作したプログラミング言語「ず」を公開しました。
「ず」はアスキーアートで図を描くとそれがそのまま実行される、フローチャート指向言語です。
性格判断を行う程度のプログラムが書けます。
サンプルプログラム:
*-----------------------* |ask "do you like ruby?"| *--------------------------------* | +------------> ask "then, do you like python?"| *------------------+----* | | | *-----+------------------------+-* | | | | | | | *----------v----------------------* | *-----------------v-----------*|say "maybe you don't like LL..." | | |say "maybe you like Haskell."|*---------------------------------* | *-----------------------------* | *------------------------------v---* | | |say "maybe you like OCaml." | *----------------------------------*
実行結果:
yhara@meteor:~/src/zu/zu-0.1.0 % ./zu sample.zu do you like ruby? [y/n] > n then, do you like python? [y/n] > y maybe you like OCaml.
(内容に深い意味はありません。^^;)
処理系のダウンロードはこちらからどうぞ。
AAグラフのパーザ部分は、Rubyのライブラリとして独立に公開予定です。ぜひ面白い使い道を考えてみてください。
■ [ruby] TextGraph-0.1.0をリリースしました
アスキーアートで書かれた有向グラフをパースするRubyライブラリ、TextGraphをリリースしました。
フゥゥーー…… 初めて…………Rubyforgeでgemを公開しちまったァ〜〜〜〜〜♪ でも想像してたより、なんて事はないな。
とりあえず newgem 使ってフォルダ構成を自動生成しておけば rake clean → rake package でgemが出来るので、あとはアップして終了。簡単でした。 詳しい手順は以下のサイトが非常に参考になりました。ありがとうございます。
*----* *---* => #<TextGraph::Graph:0x2b4fc09a19c0 |foo +--->bar| @cells = [ *-+--* *---* #<TextGraph::Cell:0x2b4fc099c538 @y=0, @raw_content="foo ", @x=0, @h=3, @w=6>, | #<TextGraph::Cell:0x2b4fc099b8b8 @y=0, @raw_content="bar", @x=9, @h=3, @w=5>, *v---* #<TextGraph::Cell:0x2b4fc0999ab8 @y=4, @raw_content="baz ", @x=1, @h=3, @w=6> |baz | ] *----* @links = [[0, 1], [0, 2]],
アルゴリズムは特に難しいことはしてなくて、
- まず文字列を文字(アスキーコード)の配列の配列に分ける
- 全ての「*」について、そこを左上とする四角ができているかを調べる
- 全ての「+」について、そこから上下左右に矢印が伸びているかを調べる
- 全ての矢印について、始点と終点がどの四角に属しているのかを調べる
という感じです。
gem install textgraph でインストールできるので、みなさんもぜひTextGraphを使ったアプリケーションを
考えられるものなら考えてみてくださいね!