読者です 読者をやめる 読者になる 読者になる

ぱろっと・すたじお

技術メモなどをまったりと / my site : http://parrot-studio.com/

ネタプログラミング言語クリエイターYouma / BF風言語解析器Windstorm リリース

Ruby

2012/03/03におこなわれた「Gunma.web #8」にて、
「ネタプログラミング言語クリエイターYouma」を発表しました
いわゆる「Brainf**k系ネタ言語」の生成スクリプトです


https://github.com/parrot-studio/youma


これを作った経緯とか、動作原理とか(´・ω・)っ



※発表そのものに関する記事はまた別途 => http://d.hatena.ne.jp/parrot_studio/20120307/1331047077
※フォントがつぶれているので、SlideShareで見てもらった方がいいかも


内部的には「BF風言語解析器 - Windstorm」を利用しており、
Youmaはそれを外から叩くコマンドツール群でしかありません


https://github.com/parrot-studio/windstorm


詳しい解説は上の記事と各READMEを読んでいただくとして、
ここではYoumaに入れた各sampleについて細かい説明を...φ(・ω・`)


なお、Youma / Windstormを用いて、
「新しい言語をつくったよー(`・ω・´)ノ」と教えていただければ、
こちらで紹介いたします

BF(単体文字系 / リファレンス)

リファレンス通りの「Brainf**k」です
ソースはWikipediaのものを使いました


これが動かなければ、Windstormの実装自体に問題があるわけで、
一番最初に作成したサンプルです

JOJO(フレーズ繰り返し系 / 他者作)


あの漫画には短い音を繰り返すフレーズが満載なので、
BF系ネタ言語としてはよく使われるのですが、
言語関係の著作が多い、前橋和弥さんのを使わせていただきました

Misa(変態系 / 他者作)


なんといっても、ソースのぶっ壊れ方が尋常ではありません(lll゚Д゚)


この人の漫画は読んだことはないものの、
あれな感じの台詞満載なことは知ってます
さすがに買う気にはなれませんが・・・


ちなみに、Windstormの「looseモード」は、
まさにMisaのために実装されました
(ついでに、Youmaのデフォルトオプション指定も)


MisaのHPにある仕様から定義ファイルを作って、
ソースコードを実行したところ、
エラーで落ちてしまったのですΣ(゚Д゚)ガーン


通常、ポインタが範囲を超えるのも好ましくありませんし、
BF系ネタ言語は「出力」が目的なので、
「ポインタが指す値」が負になったりしません


しかし、Misaはこれをデフォルトで許しているため、
素直な実装ではエラーになってしまったのです


そこで、急遽「looseモード」を定義し、
「問題が起きるまでエラーを先送り」を可能にしましたが、
たぶんMisa以外で使うことはありませんΣ(゚Д゚)ガーン

Gunma(文章系 / 自作)


「群馬について語っている文章」がソースコードになっています
元々はこれを発表するつもりだったのが、
抽象化のアイデアからYoumaに発展した・・・と


なお、「Youma」とは「ゆうまちゃん」のことであり、
「二代目・ぐんまちゃん」と深い関係にありますが、
各自で調べてくださいΣ(・ω・ノ)ノ

Shoborn(難読系 / 自作)


普段、顔文字を使いまくりの私ですので、
このアイデアはすぐ出てきました
実装も素直で、サンプルとして理想的です


「難読系」なので、「(´・ω・`)」をベースに、
各命令ごとに微妙に顔を変えてますが、
部分的にでもかぶらないように注意しています

Kitune(変態系 / 自作)


Misaに影響を受けた、変態的なソースコードのサンプルです


「定義に限りなく近いフレーズ」を混ぜてみたり、
ネストループを試したりと、結構複雑な構造になってます
その意味では「Windstromのテスト」として一番強力です

Miko(単体文字系 / 自作)


BFの8命令+Windstorm拡張の2命令に、
「m i k o M I K O ! ?」をあてた言語です
同じアイデアの言語に「mona」があります

Suzuha(フレーズ繰り返し系 / 自作)


単フレーズの繰り返しで「それっぽく見える」ネタを考えて、
思いついたのがこれでした
わかる人にはわかる、「あのシーン」です(((((( ;゚Д゚)))))


あえてループも定義しないことで、
元ネタの「絶望感」や「狂気感」を演出しています
その意味では「定義の省略」に対するサンプルになってます

QB(フレーズ繰り返し系? / 自作)


「ほむほむ」が存在するならば、
QBさんだってありだろう・・・と思ったののの、
フレーズよりは「台詞」が多いため、うまくいかなかったという(´・ω・`)


結局やっつけ仕事になってしまい、
あまりサンプルとして適切ではないものの、
せっかく作ったので収録しました


なお、インクリメントとデクリメントで人を分けてますが、
そのあたりの境界線はわかる人にはわかるはず・・・Σ(・ω・ノ)ノ