構文解析も再帰使ったほうが書きやすいかな?