ネタプログラミング言語クリエイターYouma / BF風言語解析器Windstorm リリース
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(単体文字系 / リファレンス)
- Def : https://github.com/parrot-studio/youma/blob/master/sample/bf/bf.yml
- Source : https://github.com/parrot-studio/youma/blob/master/sample/bf/hello.bf
リファレンス通りの「Brainf**k」です
ソースはWikipediaのものを使いました
これが動かなければ、Windstormの実装自体に問題があるわけで、
一番最初に作成したサンプルです
JOJO(フレーズ繰り返し系 / 他者作)
- Def : https://github.com/parrot-studio/youma/blob/master/sample/jojo/jojo.yml
- Source : https://github.com/parrot-studio/youma/blob/master/sample/jojo/hello.jojo
あの漫画には短い音を繰り返すフレーズが満載なので、
BF系ネタ言語としてはよく使われるのですが、
言語関係の著作が多い、前橋和弥さんのを使わせていただきました
Misa(変態系 / 他者作)
- Def : https://github.com/parrot-studio/youma/blob/master/sample/misa/misa.yml
- Source : https://github.com/parrot-studio/youma/blob/master/sample/misa/hello.misa
なんといっても、ソースのぶっ壊れ方が尋常ではありません(lll゚Д゚)
この人の漫画は読んだことはないものの、
あれな感じの台詞満載なことは知ってます
さすがに買う気にはなれませんが・・・
ちなみに、Windstormの「looseモード」は、
まさにMisaのために実装されました
(ついでに、Youmaのデフォルトオプション指定も)
MisaのHPにある仕様から定義ファイルを作って、
ソースコードを実行したところ、
エラーで落ちてしまったのですΣ(゚Д゚)ガーン
通常、ポインタが範囲を超えるのも好ましくありませんし、
BF系ネタ言語は「出力」が目的なので、
「ポインタが指す値」が負になったりしません
しかし、Misaはこれをデフォルトで許しているため、
素直な実装ではエラーになってしまったのです
そこで、急遽「looseモード」を定義し、
「問題が起きるまでエラーを先送り」を可能にしましたが、
たぶんMisa以外で使うことはありませんΣ(゚Д゚)ガーン
Gunma(文章系 / 自作)
- Def : https://github.com/parrot-studio/youma/blob/master/sample/gunma/gunma.yml
- Source : https://github.com/parrot-studio/youma/blob/master/sample/gunma/hello.gunma
「群馬について語っている文章」がソースコードになっています
元々はこれを発表するつもりだったのが、
抽象化のアイデアからYoumaに発展した・・・と
なお、「Youma」とは「ゆうまちゃん」のことであり、
「二代目・ぐんまちゃん」と深い関係にありますが、
各自で調べてくださいΣ(・ω・ノ)ノ
Shoborn(難読系 / 自作)
- Def : https://github.com/parrot-studio/youma/blob/master/sample/shoborn/shoborn.yml
- Source : https://github.com/parrot-studio/youma/blob/master/sample/shoborn/hello.shoborn
普段、顔文字を使いまくりの私ですので、
このアイデアはすぐ出てきました
実装も素直で、サンプルとして理想的です
「難読系」なので、「(´・ω・`)」をベースに、
各命令ごとに微妙に顔を変えてますが、
部分的にでもかぶらないように注意しています
Kitune(変態系 / 自作)
- Def : https://github.com/parrot-studio/youma/blob/master/sample/kitune/kitune.yml
- Source : https://github.com/parrot-studio/youma/blob/master/sample/kitune/hello.kitune
Misaに影響を受けた、変態的なソースコードのサンプルです
「定義に限りなく近いフレーズ」を混ぜてみたり、
ネストループを試したりと、結構複雑な構造になってます
その意味では「Windstromのテスト」として一番強力です
Miko(単体文字系 / 自作)
- Def : https://github.com/parrot-studio/youma/blob/master/sample/miko/miko.yml
- Source : https://github.com/parrot-studio/youma/blob/master/sample/miko/hello.miko
BFの8命令+Windstorm拡張の2命令に、
「m i k o M I K O ! ?」をあてた言語です
同じアイデアの言語に「mona」があります
Suzuha(フレーズ繰り返し系 / 自作)
- Def : https://github.com/parrot-studio/youma/blob/master/sample/suzuha/suzuha.yml
- Source : https://github.com/parrot-studio/youma/blob/master/sample/suzuha/hello.suzuha
単フレーズの繰り返しで「それっぽく見える」ネタを考えて、
思いついたのがこれでした
わかる人にはわかる、「あのシーン」です(((((( ;゚Д゚)))))
あえてループも定義しないことで、
元ネタの「絶望感」や「狂気感」を演出しています
その意味では「定義の省略」に対するサンプルになってます
QB(フレーズ繰り返し系? / 自作)
- Def : https://github.com/parrot-studio/youma/blob/master/sample/qb/qb.yml
- Source : https://github.com/parrot-studio/youma/blob/master/sample/qb/hello.qb
「ほむほむ」が存在するならば、
QBさんだってありだろう・・・と思ったののの、
フレーズよりは「台詞」が多いため、うまくいかなかったという(´・ω・`)
結局やっつけ仕事になってしまい、
あまりサンプルとして適切ではないものの、
せっかく作ったので収録しました
なお、インクリメントとデクリメントで人を分けてますが、
そのあたりの境界線はわかる人にはわかるはず・・・Σ(・ω・ノ)ノ