Try to parse and evaluate in one pass without tracking context.
When you hit a nested bracket, you lose track of where the outer expression was. 3[a2[c]] requires you to remember "I'm building for count 3" while processing the inner 2[c].
Without storing intermediate states, you can't handle arbitrary nesting depth.