J'ai fait quelques tests en utilisant l'échantillon spirit mini_c. Malheureusement, il ne tient pas la priorité des opérateurs comme prévu:Priorité d'opérateur dans boost :: spirit?
int main()
{
return 3 > 10 || 3 > 1;
}
est évaluée à 0.
return (3 > 10) || (3 > 1);
retourne 1
J'ai essayé de déplacer la définition de "||" et « & & » au très haut dans le constructeur de
template <typename Iterator>
expression<Iterator>::expression(
mais cela ne change rien. Comment cela peut-il être réparé? J'utilise boost 1.3.38.
Je ne l'ai jamais utilisé Boost.Spirit, mais je ne voyez comment tout ce qu'il définit pourrait faire une différence ici. Vous n'avez rien d'autre que des primitives, et vous ne pouvez pas surcharger les opérateurs intégrés. –
J'ai une autre question compte tenu de cet échantillon. Peut-être que vous pouvez aider avec ça aussi? http://stackoverflow.com/questions/3591533/implementing-not-in-boostspirit-mini-c –