Je vous écris une grammaire de Spirit Boost pour analyser le texte dans un vecteur de ces struct:Boost règle de l'Esprit avec l'analyse syntaxique attribut personnalisé
struct Pair
{
double a;
double b;
};
BOOST_FUSION_ADAPT_STRUCT(
Pair,
(double, a)
(double, a)
)
Cette grammaire a une règle comme ceci:
qi::rule<Iterator, Pair()> pairSequence;
Cependant , la grammaire réelle de pairSequence
est la suivante:
double_ % separator
Je veux que cette grammaire pour produire un Pair
avec a
égal au double et b
égal à une certaine constante. Je veux faire quelque chose comme ceci:
pairSequence = double_[_val = Pair(_1, DEFAULT_B)] % separator;
Ce qui précède ne compile pas, bien sûr. J'ai essayé d'ajouter un constructeur à Pair
, mais je reçois toujours des erreurs de compilation (aucune fonction correspondant à l'appel de 'Pair :: Pair (const boost :: phoenix :: actor> &, double)').
Ah oui, j'ai manqué le vecteur construire. –
AJM