C'est probablement une question d'une facilité déconcertante, d'autant plus que j'utilise QI avec succès pour analyser des structures simples depuis un certain temps déjà, et que je devrais probablement déjà connaître la réponse, mais elle m'échappe malgré tout...
Disons que nous avons un conteneur comme :
struct GenderTally
{
std::vector<std::string> males;
std::vector<std::string> females;
};
et un fichier d'entrée comme
m:Steve;
f:Dora;
f:Martha;
m:Joe;
...
Les objets d'une catégorie spécifique peuvent apparaître dans n'importe quel ordre et tous les objets peuvent ne pas apparaître.
Je vais passer l'adaptation de Fusion ici, mais il s'agirait de deux vecteurs de chaînes de caractères.
Mon problème est de construire une grammaire qui remplisse un conteneur conditionnel comme celui-ci. Jusqu'à présent, j'ai contourné ce problème en analysant l'entrée plusieurs fois, chaque fois avec une grammaire spécialisée. Dans cet exemple, il s'agirait d'une grammaire masculine et féminine.
Dans le tutoriel mini-XML de QI, j'ai eu l'impression que les règles automatiques suppriment les actions sémantiques, mais il faut bien admettre que je suis un débutant et que je suis encore intimidé par les API magiques (template) hardcore comme celles utilisées par QI. Donc, même si je sais que c'est très, très mal vu... je serais très reconnaissant d'avoir un exemple concret ici, car je suis en train de faire face à un blocage majeur de la part d'un cerf dans la lumière. modifier : Il n'est pas nécessaire que ce soit exactement pour cette structure, juste... un exemple pratique d'une grammaire qui utilise des règles automatiques, et met les choses dans les catégories appropriées.