Exactement :
-> MainEval( *( 3 - 2 + 1 )) // On part de l'adresse d'une expression
Decompose( *( 3 - 2 + 1 )) // On décompose, on obtient int 3, SIGN -, PTR *( 2 + 1 )
-> Eval(3, -, *( 2 + 1 )) // On évalue tout ça
Decompose( *( 2 + 1 )) // On décompose, on obient int 2, SIGN +, PTR *(1)
ComparePriorité( -, + ) // On compare les priorités, elles sont égales,
Moins( 3, 2 ) -> 1 // Donc on résoud là première opération
-> Eval( 1, +, *( 1 )) // On continue, vu qu'on a encore au moins un opérateur à traiter
Decompose( *( 1 )) // On obtient int 1, SIGN NONE, PTR *( après 1)
Return( Plus( 1, 1 )) // Comme SIGN == NONE, on résoud l'opération et on reviens