yaccみたいなパーサジェネレータを作るというのはどうだろう
自前でステート管理のコードを書くかわりに自動生成したコードに管理してもらう
あとは構文とアクションを書くだけ
ただしパーサジェネレータを作るのが面倒いかもしれない