Mi rispondo da solo... ci ho pensato un po'.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!
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
![]()

Rispondi quotando