単純なマーク付けがなされた文字列の解析 #7

構文解析器生成系と字句解析器生成系を使って解析プログラムを作ったわけだが、
解析したいことに比べてどうにも仕掛けが大げさすぎると思う。
保守性や拡張性を考えればこの方法は悪くないと思うがスカルペルでステーキを切っているような感覚が。

そこで有限状態機械を作って、これに解析させることを考える。
この程度の規模の有限状態機械の状態遷移図を手で作るのは難しくなく、
#1のBNFに基づく言葉で#1の図を参考に描けば、


のような感じになる。
これはノードが状態を表し、エッジのラベルで示した入力によりエッジの先の状態へ遷移することを表す。
エッジで示されない入力がなされた場合はエラー状態になる。
例えば、状態marked-string-bodyにおいて入力の終りEOFが来たらエラー状態となる(つまり括弧の閉じ忘れ)。
また、状態stringで右括弧が入力されてもエラー状態になる(つまり対応する左括弧がない)。