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.
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 struct toto { std::vector<float> A, B, C; std::vector<int> D; };
Et s'il parse cette entrée :
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; };
Je veux qu'il y ait dans ma structure les quatres vectors avec :
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
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 !
Partager