プログラミング言語 ζ*'ヮ')ζ<うっうー!

テキストボックスに「うっうー」のソースを放り込んで「じっこう」ボタンを押すと、実行結果が表示されます。サンプルソースと解説は下の方に。

ζ*'ヮ')ζ<ここにけっかがでます

ζ*'ヮ')ζ<さんぷるそーす

Quine

ハイ、ターッチ

「うっうー」と7回表示

あうー うっうー かもー イエイ ハイ、ターッチ おとく うっうー かなーって

「うっうー」と7回表示するコードを実行時に生成してそのコードを実行

うっうー!私はりきっちゃうかもー!
イエイってなっちゃうかなーって。

高槻やよいでーっす、イエイ!
なんだか「ぷろぐらみんぐげんご」になっちゃうらしくて、うっうーってなっちゃいます! イエイ!
うっうーって私の口癖なんですけど、うっうーって言うとうっうーってなっちゃって、もううっうーうっうーうっうーイエイって感じです!
モニタの前のみなさんも、うっうーって言ってうっうーってなっちゃいましょう!うっうー、イエイ!
あのあの、うっうーって言うと「ぽいんたの指す値」がうっうーってなって、うっうーって感じで増えて、うっうーがうっうーでイエイになるらしいです。よく分かりません…
とにかくうっうーって叫べば、どんどんうっうーってなって、もううっうーが止まらなくてうっうーイエイってなります!
うっうーばっかりで苦しくなってきましたけど、イエイってがんばります!
もう一息、うっうーうっうーうっうーうっうーうっうーうっうーうっうー!!!

このページは、おとくです!えむ、あい、てぃーライセンスで配布するそうなのでおとく!お金がかからないのでおとく、再配布も出来ておとく、おとくでおとくなのですっごくおとくです!

あうー、がんばって説明しましたけど、あうーって感じでよく分からないです、あうー… あうー、ボロが出ないうちに退散します、あうー…え、あうーってまだ言わなきゃですか? あうー あうー。

ζ*'ヮ')ζ<かいせつ

いわゆるBrainf*ck系のプログラミング言語です。命令に「うっうー」「ううー」などの、やよいっぽい語彙を使います。基本はBrainf*ckなので、Brainf*ckを理解した上で下の解説を読んでください。

命令一覧
  • あうー:値の0. nop
  • うっうー:値の1. (*ptr)++ 全加算器なので桁上がりが前方に伝播する
  • ううー:値の2. (*ptr)-- 全減算器なので桁下がりが後方に伝播する
  • イエイ:値の3. ptr++
  • <おとく:値の4. ptr--/li>
  • ハイ、ターッチ:値の5. print((*ptr))
  • かもー:値の6. ptr == あうー ならば対応する「かなーって」までジャンプ
  • かなーって:値の7. *ptr != あうー ならば対応する「かもー」までジャンプ
字句解析
ソース上では、上の命令一覧にマッチする文字列以外は無視されます。トークンの間を区切る必要はありません。
うっうーうううっうーイエイζ*'ヮ')ζ<かなってー → うっうー うっうー イエイ かなーって
トークンと衝突しない限り、大喜利でも顔文字でも好きなように入れてください。
データ型(もしくは扱える数字)
「命令一覧」にある8種類が、そのまま数値の0〜7に対応します。「ハイ、ターッチ」で出力する際、数値は対応するあうー〜かなーってのトークンにデコードされます。
データ領域とプログラム領域
本家Brainf*ckではデータ領域とプログラム領域が分かれていますが、「うっうー」ではこの2つは同じメモリ上に存在します。 つまり、うっうー/ううー等の命令を通じて、実行時にプログラム(兼データ)を書き換えて、そのコードを実行させることができます。 3番目のサンプルでは、「あうー」で埋められている領域を、うっうーと7回表示するサンプルと同じコードに置き換えています。

ζ*'ヮ')ζ<りんく

Github上のソースコード

作者 @tackman