コマンドライン引数で有限オートマトンの条件を書いたjsonへのパスを渡して実行し、 文の候補となる語の羅列を入力後、条件で表されるオートマトンで表現される文であるかを判定します。
条件は、
- 状態を表す集合
- 開始状態
- 受理状態を表す集合
- アルファベット(語)
- 遷移規則
から成り、遷移規則は全ての状態の要素とアルファベットの要素に対して次の状態の要素が過不足無く定義されているものとします。
例えば、rule.jsonでは4つのノードを持ち、開始ノードと受理ノードが同じで、0と1の組み合わせからなるある文字列の集合を判定します。 遷移は状態をQ、アルファベットをAとして、(Q, A)->Qの形式を{Q->A->Q}の形式で以下のように記載します。
{
"state":["A", "B", "C", "D"],
"start_state":"A",
"set_of_accept_states":["A"],
"alphabet":["0", "1"],
"transition_function":{
"A":{
"1":"B",
"0":"D"
},
"B":{
"1":"A",
"0":"C"
},
"C":{
"1":"D",
"0":"B"
},
"D":{
"1":"C",
"0":"A"
}
}
}