mizdra's poem

雑なこと (日記/技術ポエム/メモ/…) を書くブログです. 真に受けないでください.

2018-07-11

今日の電車

  • 行き: 負け
  • 帰り: 勝ち

自作言語

課題で自作言語を作っている. とはいっても一から全てやる訳ではなく, 数値演算や標準入力/標準出力などの基本的な機能の付いたテンプレートを与えられ, それをカスタマイズする形で機能を実装している.

開発にはテスト駆動開発 (TDD) を導入している. 元々, 少しずつ小さな機能を実装していくタイプの課題だったので相性も良い. 例えば do-while 文の実装では, 以下のように先にテストを書き, それから実装する.

#!/bin/bash

################################################
# do-while 文はブロックを評価した後に条件式を評価する.
# 評価された値が真ならループし, 偽ならループを抜ける.
################################################

program=$(cat <<EOS
main {
    x = 0;
    do {
        print x;
        x = x + 1;
    } while (x == 1);
}
EOS
)

input=$(cat <<EOS
EOS
)

expected_output=$(cat <<EOS
0
1
EOS
)

./assert-run.sh "$program" "$input" "$expected_output"

TDDについて知りたいときは, TDD伝道師と呼ばれる和田さん訳の本を読むと良さそう. 僕はまだ第Ⅱ部までしか読みきれてないけど…

テスト駆動開発

テスト駆動開発