Originariamente inviato da edriv
Un parser di espressioni lo vorrei fare (e lo sto facendo) facendo analisi da solo, senza prendere spunti, per poi confrontarmi.

Non ho capito come fare a distinguere un - (o +) unario o binario!
Mi rispondo da solo... ci ho pensato un po'.
Se il - (o +) è preceduto da un valore (anche non terminale, quindi un livello inferiore di parentesi o il risultato di un operatore/funzione con priorità maggiore), allora è binario.
Se è preceduto da un operatore a priorità minore dell'operatore unario in questione (quindi anche una priorità alta, come *) allora è unario.
Se si trova all'inizio di una sottoespressione circondata da parentesi o della espressione principale, è ancora unario.

-4 + 2: - unario, + binario
(2*3)-4: - binario
5 * -3: - unario