|
> 今入れ子ではないカッコの時はIndexOfでカッコを探し計算していますが > 入れ子になった時このままで出来るのか
再帰つかってやれなくもないすね。
exp = "((1 + 2) * (3 + 4)) / 7" 最も外側の()に囲まれる部分を x0 に置き換えます exp = "x0 / 7", x0 = "(1 + 2) * (3 + 4)" x0 について同じことをします exp = "x0 / 7", x0 = "x1 * x2", x1 = "1 + 2", x2 = "3 + 4" カッコがなくなったら計算します exp = "x0 / 7", x0 = "x1 * x2", x1 = "3", x2 = "7" x1, x2 が確定したので元に戻します exp = "x0 / 7", x0 = "3 * 7" カッコがなくなったら計算します exp = "x0 / 7", x0 = "21" x0 が確定したので元に戻します exp = "21 / 7" カッコがなくなったら計算します exp = "3"
おしまい。 例示した再帰下降パーサも同じことやってると思っていいですね。
|