oviamente è più probabile che Carmine abbia bisogno di ripassare Analisi I 
questo è un colpo basso

comunque quando il dato è dichiarato int il compilatore esegue la divisione troncando la parte decimale, perchè il parser rappresenti numeri razionali suppongo che debba parsare anche le virgole, che dovrebbero essere trattate come operatori binari
a.b = a + 0.b

quindi se non definisco l'operatore "." ho un parser che lavora nel gruppo dei numeri naturali

comunque a livello concettuale, quello che vorrei fare è la seguente cosa:
es. 3 + 2 * (5-3)
innanzitutto tolgo gli spazi, controllo eventuali caratteri vietati e racchiudo tutto tra parentesi
(3+2*(5-3))
dopodichè cerco le parentesi piu interne, passando l'indice del vettore che contiene tali parantesi ricorsivamente alla funzione
(3+2*(2))
ora metto il 2 al posto della parentesi aperta ed elimino quella chiusa
(3+2*2)
effettuo le due operazioni secondo priorità
(3+4)
(7)
ed elimino le parentesi
7
è giusto?