Intro Blog

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

2016-06-01から1ヶ月間の記事一覧

IntroJS の入出力

IntroJS の入出力は、標準入出力のみです。 ファイル入出力は、ありません。 IntroJS では、文字列を扱えないので、ファイル名が必要になるファイル入出力は、ばっさりと省きました。 入力データの書式は、空白区切りのテキストです。 行は、改行で区切りま…

IntroJS の長さ演算子

IntroJS には、配列の長さを取得するための長さ演算子 $ があります。 次のように記述すると、配列の長さ 3 を出力します。 var vv = [3, 1, 4] write_int($vv) 他のプログラミング言語では、配列の長さを取得する演算子をあまり見かけませんが、 IntroJS で…

IntroJS の範囲式

IntroJS では、for 文の式の部分に、範囲式を指定できます。 (逆に、for 文以外では、範囲式を使うことはできません。) 範囲式の書式は次のとおりです。 初期値 範囲演算子 境界値 [スキップ演算子 増分] 範囲式には、範囲演算子が必須です。 次の範囲演算子…

IntroJS の for 文

IntroJS の for 文は、次のように記述します。 for 識別子 in 式 ... end 識別子には、ループ内で使用する変数の名前を指定します。 式に、配列 (または、配列を返す式) を指定すると、ループ変数には、配列の各要素が設定されます。 次のように記述すると、…

IntroJS の変数宣言

IntroJS の変数宣言は var で始めます。 var a = 0 変数名は、参照範囲内にある識別子 (関数名、仮引数名、変数名)と同じ名前にはできません。 変数の初期化は、必ず必要です。 変数初期化の結果のデータ型によって、変数のデータ型が決まります。 変数に値…

IntroJS の関数定義

IntroJS のトップレベルにかけるのは、今のところ関数定義のみです。 モジュールのインポートや、グローパル変数などは、まだサポートしていません。 IntroJS の関数定義では、仮引数や戻り値にデータ型の指定が必ず必要になります。 def func(v: Int, vv: I…

IntroJS におけるブロック構造の書き方

IntroJS では、Ruby 風にブロックの終わりを end で示します。 ブロックの始まりは、def, if, for, while などになります。 インデントは、空白文字 (半角空白、水平タブ) 何個でもよく、そろえる必要もないですが、 半角 2 文字と推奨としています。 という…

IntroJS でテストファーストを実践してみる

IntroJS の自動テスト機能を使って、テストファーストを実践してみます。 例題として、簡単な足し算プログラムを作ります。 入力データ仕様は、1 行目と 2 行目に整数 1 つずつとします。 出力データ仕様は、入力データの 2 つの整数を足したものを 1行目に …

IntroJS の自動テスト機能

IntroJS には、競技プログラミング風の自動テスト機能が組み込まれています。 次のようなファイル構成でソースコードとテストデータを作成します。 ├─example.intro ├─case1 │ ├─input.txt │ └─output.txt └─case2 ├─input.txt └─output.txt case ディレクト…

IntroJS のインストール

IntroJS は、Node.js 上で動作します。 Node.js をインストールして、以下のコマンドを実行してください。 npm install -g introjs インストールできたことを確認するには、以下のコマンドを実行してみてください。 ヘルプが表示されれば、インストールは成…

なぜ、整数型しか使えないプログラミング言語を作ったのか。

スマホでプログラミングが楽しめるアプリを作りたいと思って、 Scratch のようなブロックを組み立てるビジュアルプログラミング方式を考えていたのですが、 ブロックや、テキストボックスを指でチマチマ操作するのがしんどい 作成したプログラムが読みにくい…

プログラミング言語を作ってみました

整数型しか使えない簡易プログラミング言語を JavaScript で作ってみました。 IntroJS いかがでしょうか。