日本語プログラミング言語「こばなし」
http://blog.technohippy.net/pages/products/kobanashi
文法
コメント
一行コメント
(^_^) < コメント
複数行コメント
…… コメント(改行可) ……。
リテラル
文字
#文字
文字列
『 文字列 』
シンボル
< シンボル >
正規表現
/ 正規表現 /
配列
[ 要素 ・ 要素 ・ 要素 ]
ハッシュ
{ 鍵 → 値 ・ 鍵 → 値 }
ブロック
「 処理 」
メッセージ送信
単項メッセージ
レシーバー メッセージ
例
『文字列』の文字数。 (^_^) < 6 (レシーバー:文字列、メッセージ:の文字数)
[1・2・3] のいずれか。(^_^) < 1 (レシーバー:[1・2・3]、メッセージ:のいずれか)
キーワードメッセージ
レシーバー 助詞、 引数 助詞、 引数 メッセージ
助詞と引数の組の数は任意です。0のときは単項メッセージに一致します。
例
『あいうえお』に、『かきくけこ』を繋ぐ。 (^_^) < 『あいうえおかきくけこ』
- レシーバー: あいうえお
- メッセージ: に、を繋ぐ
- 引数: かきくけこ
『あいうえお』の、2番目に、『ホゲ』を挿入する。(^_^) < 『あホゲいうえおかきくけこ』
- レシーバー: あいうえお
- メッセージ: の、に、を挿入する
- 引数: 2・ホゲ
代入
変数 は 値
例
文字列 は 『』。 (^_^) < 文字列を空に初期化
分岐(ただのメッセージ送信)
例
「『あいうえお』の文字数 が、10 に等しい。」 が本当なら、「『10文字ですね』。」を実行する。
- レシーバー: 「『あいうえお』の文字数 が、10 に等しい。」
- メッセージ: が本当なら、を実行する
- 引数: 「『10文字ですね』。」
繰返し(ただのメッセージ送信)
例
10 回、「文字列 は 文字列 と、『あ』の連結。」を繰り返す。
- レシーバー: 10
- メッセージ: 回、を繰り返す
- 引数: 「文字列 は 文字列 と、『あ』の連結。」
「文字列 の文字数 が、10 より小さい。」なら、「文字列 は 文字列 と、『あ』の連結。」を繰り返す。
- レシーバー: 「文字列 の文字数 が、10 より小さい。」
- メッセージ:なら、を繰り返す
- 引数: 「文字列 は 文字列 と、『あ』の連結。」
その他
特殊変数
「それ」「あれ」はそれぞれ一つ前と二つ前の実行結果を表します。
例
『あいうえお』の、2番目に、『ホゲ』を挿入する。
それ に、『かきくけこ』を繋ぐ。
それ に、あれ を繋ぐ。 (^_^) < あホゲいうえおかきくけこあホゲいうえお
コメントとしての接続詞
文の一番最初にある「文字列、」は接続詞と見なされて処理に影響を与えません。
例
『あいうえお』の、2番目に、『ホゲ』を挿入する。
加えて、それ に、『かきくけこ』を繋ぐ。
さらに、それ に、あれ を繋ぐ。
プログラム例 (じゃんけん)
(^_^) < 以下のプログラムはユーザーからの入力(0 or 1 or 2)を受け付けて、コンピューターの手と比較して勝敗を表示します。
<<もの>> の一種として、 <じゃんけん> を作る。
<<じゃんけん>> にメソッド、『ほいっ、(あなたの手) は?』 を定義し、「対応表 は {0→『グー 』・1→『チョキ 』・2→『パー 』}。あなたの手 を数値に変換する。あなたの手 は それ。私の手 は [0・1・2] のいずれか。勝敗 は あなたの手 と、私の手 の差。対応表 の、あなたの手 の値。対応表 の、私の手 の値。対戦結果 は あれ に、それ を繋ぐ。「勝敗 が、 0 と等しい。」なら、「対戦結果 に、『:引き分け』を繋ぐ。」そうじゃないとき、「「勝敗 が、 1 と等しい または、(勝敗 が、 -2 と等しい) が成り立つ。」なら、「対戦結果 に、『:あなたの負け』を繋ぐ。」そうじゃないとき、「「勝敗 が、 -1 と等しい または、(勝敗 が、 2 と等しい) が成り立つ。」なら、「対戦結果 に、『:あなたの勝ち』を繋ぐ。」を実行する。」を実行する。」を実行する。」を処理する。
<<じゃんけん>> にメソッド、『を開始する』 を定義し、「あなたの手 は 『』。「[『0』・『1』・『2』] に、あなたの手 が含まれる?。」まで、「『0:グー、1:チョキ、2:パー』を表示する。あなたの手 を <<キーボード>> から読み込む。あなたの手 の改行を除く!。」を繰り返す。私 ほいっ、あなたの手 は?。」を処理する。
じゃんけん は <<じゃんけん>> の実体。じゃんけん を開始する。結果 を表示する。
……実際のところ自分でもこれは使いたくないなと思います……。
実行結果
0:グー、1:チョキ、2:パー
0
グー チョキ:あなたの勝ち