戻る
ぼくのかんがえたあたらしいげんご
プログラミング言語 Misa
1.Misa とは
2.ダウンロード
3.インストール方法
4.プログラム例
5.コマンドラインオプション
6.Misa の命令セット
7.文法
8.配布している misa.exe の仕様
9.ライセンス
10.連絡先
11.謝辞
Misa とは |
Misa は、みさくら語で書けるプログラミング言語です。 ステキ漫画家みさくらなんこつ先生のセリフ回しにできるだけ近い表現で、プログラムを記述することを目指して作られました。 |
ダウンロード |
Windows用実行ファイル(DOSプロンプトで動作します) Misa version 1.01(30KB) ソースコード Misa version 1.01 src(13KB) |
インストール方法 |
インストーラーなどは付属していません。 ダウンロードしたバイナリファイルを解凍後、好きな場所に置いてください。 コンソールプログラムですので、パスの通った場所(例えば C:\Window\)へ置くと便利かも知れません。 アンインストールは、ファイルを削除するだけです。 |
コマンドラインオプション | ||||||||||||||||||||||
Misa は、以下の書式のコマンドラインで起動します。 misa [option] [--] [filename] 以下のオプションが指定できます。
ファイル名を指定せずに起動した場合は、標準入力からプログラムを読み込みます。 |
Misa の命令セット | ||||||||||||||||||
Misa は文法上、Brainf**k というプログラミング言語の亜流言語です。 Brainf**k とは、みさくら語に直訳すれば おつむでち**しごき という意味ですが、Misa は Brainf**k のプログラムもそのまま実行することができます。 Misa では、1つの命令は1文字の記号または日本語文字で成り立ちます。 命令は全部で8種類です。 以下の命令表では1つの命令に複数の文字が割り当てられていますが、これはどの文字を使っても同じ命令になるということです。 [ 命令表 ]
|
文法 | ||||||||||||
(1)コメント '#'(半角シャープ)から行末まではコメントとして無視されます。 また、命令文字とコメント記号以外の文字がプログラム中に書かれていても、それらはすべて単に無視されます(エラーにはなりません)。 (2)データメモリとポインタ Misa は、内部に仮想のデータメモリとポインタを持っています。 プログラム実行開始時は、ポインタは(データメモリ上の)0番地を指していてデータメモリはすべて0で埋められています。 実例を見た方がイメージを掴みやすいと思います。 次のプログラムを実行させてみてください。0から9の数字を表示します。
'あ' 命令はポインタの指す値を1増やす命令です。 2行目の真ん中までで 'あ' 命令を48回繰り返したので、ポインタの指す0番地のメモリの値は48になっています。 48は、文字コード(アスキーコード)では '0' を意味します。 次に出てくる '!' 命令はポインタの指すメモリの値を表示するもので、昔の BASIC 言語で言えば PRINT 命令に相当します。 メモリの値は現在48ですので、画面には '0' と表示されます。 '0' を表示した後、"あ!" が9つ並んでいるのが分かると思います。 'あ' と '!' で『1増やしてそれを表示』という意味になりますから、9回繰り返せば '1'、'2'、'3'……と数字を増やしながら順番に '9' まで表示されて実行結果の通りになります。 (3)ループ '「' と '」' で囲んだ内側はループになります。 ポインタの指す値が0になるまで、カッコの内側のコードを繰り返します。 次の例題は、入力された文字をそのまま出力し続けるプログラムです。
上の例では、短いプログラムなので '-e' オプション(プログラムを直接指定するオプション)で起動しています。 最初の 'あ' 命令で、メモリの値を1にします。 次の '「' 命令はループの開始を表す命令で、現在のメモリの値が0なら対応するループ終了命令 '」' までジャンプします。現在のメモリの値は1なので、ジャンプせずに次に進みます。 '?' 命令は、入力を1文字受け付けてポインタの指すメモリに代入する命令です。BASIC 言語で言えば INPUT 命令に相当します。 例題では、'?' 命令で一文字取り込んで、'!' 命令でそのまま出力しています。 その次の '」' 命令はループの終了を表し、ループ開始位置までジャンプします。ここでループ先頭の '「' 命令に戻り、入力された値(=現在のメモリの値)が0でなければ、再びループの内容を繰り返します(キーボードから0の値は打ち込めないので、実質的には永久に繰り返すループになっています)。 最後に、終了するために Ctrl + C キーを押してプログラムを止めています。 以上が文法の基本です。 普通の条件分岐のような命令はありませんが、8つの命令の組み合わせで実現できるみたいです。 より高度な問題の解法については 以下の BrainF**k の解説サイトを参考にしてください。 The Brainfuck Programming Language (英語) kMonos.NET - Brainf*ck (日本語) |
配布している misa.exe の仕様 |
セル(任意のアドレスが指す1つのメモリ単位)の値範囲: -128〜127 メモリサイズ:無制限(デフォルトの動作では、マイナス方向にも拡張されます) コードサイズ:無制限 文字コード:ShiftJIS(コンパイルしなおせば、日本語 EUC にも対応可能です) |
ライセンス |
このプログラムはフリーソフトウェアです。The MIT License に基づいて配布されます。 学術/商業利用を問わず、一切の代価を必要とせずに使用できます。 このプログラムの使用、改変、再配布、販売は、自由に行えます。 異なる二次ライセンスを適用することができます。 無保証です。著作権は放棄していません。 Copyright (C) 2005 Okayu Punch Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. |
連絡先 |
ご意見やバグレポートなどは、以下の連絡先へお願いします。 okayumbi.nifty.com(おかゆぱんち) |
謝辞 |
サンプルプログラムを作成するにあたって、以下のサイトを参考にさせていただきました。 「みさくらなんこつのガイドライン」 まとめっぽいページ。 みさくらなんこつ先生の偉大さを教えてくれた、2ちゃんねる『みさくらなんこつのガイドライン』スレッドの方々に感謝します。 Misa 言語の元になっている Brainfuck 言語の製作者 Urban Muller 氏に感謝します。 そして Misa 言語の精神的支柱であり、インスピレーションの源泉であり、名前の一部を言語名に取らせていただいた、みさくらなんこつ先生に深く感謝します。 |