2
0

Mindのオープンソース互換OpenMindを作った

Last updated at Posted at 2024-09-19

なんで?

本家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
きっかけを与えて頂きありがとうございました!

2
0
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0