bison(yacc)もflex(lex)もステートマシンを生成してくれる便利なツール。
flex(lex)は構文解析用だが、BNF記法 で定義できるものに応用できる。
何か忘れてしまったが、状態遷移図を書くようなロジックで使われたのを見たことがある。