Hice algunas pruebas con la muestra spirit mini_c. Por desgracia, no se mantiene la prioridad de los operadores como se esperaba:Prioridad del operador en boost :: spirit?
int main()
{
return 3 > 10 || 3 > 1;
}
evalúa a 0.
return (3 > 10) || (3 > 1);
devuelve 1
Traté de mover la definición de "||" y "& &" a lo más alto en el constructor de
template <typename Iterator>
expression<Iterator>::expression(
pero eso no cambia nada. ¿Cómo puede ser arreglado? Estoy usando boost 1.3.38.
nunca he utilizado Boost.Spirit, pero no lo hago ver cómo cualquier cosa que define podría hacer la diferencia aquí. No tiene nada más que primitivos, y no puede sobrecargar los operadores integrados. –
Tengo otra pregunta considerando esta muestra. ¿Quizás también puedas ayudar con eso? http://stackoverflow.com/questions/3591533/implementing-not-in-boostspirit-mini-c –