I organized it in order of operator precedence, from loosest (+/-) to tightest (^) to the num itself.. ()'s group expression so they should be considered a number, but inside you just call the parser again to evaluate the inside. (yes there are probably better ways to do this but optimization comes later..) I just want do know why it's looping forever on input as simple as "1+(2+3)".
It perplexes me.. ^_^