Intro Blog

プログラミング言語を作っています

IntroJS の入出力

IntroJS の入出力は、標準入出力のみです。 ファイル入出力は、ありません。 IntroJS では、文字列を扱えないので、ファイル名が必要になるファイル入出力は、ばっさりと省きました。

入力データの書式は、空白区切りのテキストです。 行は、改行で区切ります。 行の先頭と末尾の空白は無視します。 値は、1 つ以上の半角スペース、または、水平タブで区切ります。 つまり、次の 2 行は読み込むデータとしては、同等になります。

1 2 3
  1  2  3  

標準入力からデータを読み込むには、次の組み込み関数を使います。

  • read(values: Int[], offset: Int, length: Int): Int
  • read_int(): Int
  • read_ints(max_length: Int): Int[]

これらの関数を 1 回呼び出すごとに、標準入力から 1 行を読み取ります。

read の戻り値は、値の個数です。 空行のときは、0 を返します。 入力の最後に達したときは、-1 を返します。

read_int の戻り値は、1 行の中の最初の値です。 空行、または、入力の最後のときは、0 を返します。 空行と入力の最後を区別したいときは、read を使う必要があります。

read_ints の戻り値は、1 行の値の配列です。 空行、または、入力の最後のときは、空の配列を返します。 空行と入力の最後を区別したいときは、read を使う必要があります。

read_ints の戻り値の配列の長さは、引き数で指定した長さ以下になります。 1 行の値の数が少ないときは、指定した長さよりも短い長さの配列を返します。 (引き数で指定した長さまで、0 で埋めるようなことはしません。)

出力データの書式も、空白区切りのテキストです。 通常は、行区切りは LF、値区切りは水平タブで出力します。

標準出力にデータを書き出すには、次の組み込み関数を使います。

  • write(values: Int[], offset: Int, length: Int)
  • write_int(value: Int)
  • write_ints(values: Int[])

これらの関数を 1 回呼び出すごとに、標準出力に 1 行を書き出します。

ということで、整数型しか使えない簡易プログラミング言語 IntroJS は、いかがでしょうか。

IntroJS