なんで?
本家Mindにちょっと不満があったからです。
- オープンソースではない
- 環境構築が大変
それでも、Mindは素晴らしい日本語プログラミング言語です。
無いならオープンソース版を自分で作ってやろう!と思い、開発しました。
開発
開発しているうちに、「こうした方が簡単なんじゃないか」とかアイデアが出て、独自仕様になっちゃいました。
なので完全な互換性はありませんが、ちょっとした手直しで動くと思います。
仕様
処理系はRust製インタプリタです。アーキテクチャは本家Mind同様スタックベースです。
日本語処理に正規表現を使っているので、ちょっと遅いかもしれません。識別子や命令は全て漢字です。アルファベットや仮名文字などは区切り文字として扱われます。
ブロックに値するのは鉤括弧「」
で区切られた文字列で、それを制御構造の命令に引数として渡しています。また、定義
命令を使ってユーザが命令を定義して再利用性を高めることもできます。
サンプルコード
お馴染みのFizzBuzzです。
sample.om
「
もし3でわった余りが0と等しいなら「「Fizz」」にする
そうでなければ「無」にする条件分岐する。
」
このコードを附図として定義する。
「
もし5でわった余りが0と等しいなら「「Buzz」」にする
そうでなければ「無」にする条件分岐する。
」
このコードを芭図として定義する。
「
うけとったデータを「値」に代入する。
値で附図して値で芭図して結合して「結果」に代入する。
もし結果が無しと等しかったら「値」に、
そうでなければ「其れ」にする条件分岐する。
」
このコードを判定として定義する。
0を数に代入し、無を出力に代入する。
「数が百より小さい」あいだ
「
数と1を足したのを「数」に代入する。
出力と其れを判定したのを結合して、
さらに改行と結合して「出力」に代入する。
」
を反復して、出力を表示する。
出典:https://github.com/KajizukaTaichi/openmind/blob/main/sample.om
最後に
本家Mindの開発者である @killy 様
きっかけを与えて頂きありがとうございました!