Skip to content
This repository has been archived by the owner on Feb 14, 2024. It is now read-only.

momeemt/minim

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

46 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

minim

ci docs deploy

GB27001 ソフトウェアサイエンス特別講義Aの講義で紹介された、minisのNim実装です。

インストール

nimble install https://github.com/momeemt/minim

実行

pathオプションにminimファイルのパスを指定します。

result = 2023
result
minim --path hello.minim # 2023

文法

minimは関数定義・関数呼び出し・if式・while式・連接・代入式・比較演算子・四則演算子・モジュロ演算子をサポートし、値は全て数値です。 詳細な定義についてはminim.ebnfを確認してください。

また、プログラムの最後に評価された値が標準出力に出力されます。

関数定義・関数呼び出し

functionキーワードで関数を定義します。0個以上の仮引数と連接を受け取ります。 また、すでに定義した関数は()演算子と0個以上の実引数を渡すことで呼び出すことができます。

次のプログラムは、8と評価されます。

function f (i) {
  i + 1
  i + 2
  i + 3
}

f(5)

代入式

識別子に対して値を代入できます。代入式自身も、代入された値を返します。

次のプログラムは、1と評価されます。

hello = 1
hello

if式・while

条件式は、0の場合は偽、0以外の場合は真を取ります。 if式はifelseそれぞれの最後に評価された式の値を返します。while式は最後に評価された式の値を返します。 if式はelse句を省略できないことに注意してください。

次のプログラムは25と評価されます。

result = 0
i = 1
while (i < 10) {
  if (i % 2) {
    result = result + i
  } else {
    0
  }
  i = i + 1
}
result

比較・四則演算・モジュロ演算

四則演算子は、+-*/です。 モジュロ演算子は%です。 比較演算子は、<<=>>=をサポートしており、真の場合は1を、偽の場合は0を返します。

かっこ()で囲われた式の優先度が最も高く、次に単項演算子+-、乗除演算・モジュロ演算、加減演算、比較演算子と続きます。

次のプログラムは2と評価されます。

(10 * 2 + 12 / 3 - (4 > -2)) % 7 + (3 < 2)

APIドキュメント

minimの字句解析器・構文解析器・評価器をライブラリとして提供しています。

ライセンス

minimはApache-2.0 Licenseでライセンスされています。

作者

Releases

No releases published

Packages

No packages published

Languages