あまり強調されないようですが、Erlangでは、その構文と実行メカニズムとがあいまって、状態遷移のプログラミングがとても容易です。 例題として、正規表現 /aa?b*c/ とマッチする文字列を認識するオートマトンを作ってみましょう。まず、状態遷移図を描き*1、それから遷移表を書きます。図と表のなかで、EOSは End Of String のマーカー、◎は終状態です 遷移表: 0から3までの各状態について、入力ごとの遷移先は次の通り。×はエラーです。 状態 文字a 文字b 文字c EOS その他 0 1 × × × × 1 2 2 3 × × 2 × 2 3 × × 3 × × × ◎ × この表を見ながら、Erlangコードを書きます。以下のような感じ。 accept(N) -> % 引数Nが状態 case N of 0 -> receive $a -> accept(1); _ -> e
