Bonjour !

Je recrée un topic sur un de mes (nombreux) problèmes, celui ci concerne toujours boost::spirit. J'essayes en ce moment de créer une grammaire capable de remplir une structure spéciale contenant plusieurs std::vectors du même type.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
struct toto
{
    std::vector<float> A, B, C;
    std::vector<int> D;
};
J'aimerais une grammaire qui serait capable, en fonction de ce qu'elle recoit, ajoute à ces tableaux des valeurs de maniere distincte, un truc comme ca en fait :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
struct grammaire : qi::grammar<std::string::iterator, toto(), ascii::space_type>
{
    grammaire() : grammaire::base_type(start)
    {
         start = ('A' >> float_[])|('B' >> float_[])|('C' >> float_[])|('D' >> int_[])
    }
    qi::rule<std::string::iterator, toto(), ascii::space_type> start;
 
};
Et s'il parse cette entrée :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
A 45.47
B 89.3
C 78.2
D 1
D 3
C 12.8
Je veux qu'il y ait dans ma structure les quatres vectors avec :
A qui contient un float qui vaut 45.47
C qui contient deux floats qui valent 78.2 et 12.8
etc ...


Voila, j'espere m'être bien exprimé, merci de m'avoir lu !