2010-02-01 17 views
12

J'ai compris comment utiliser l'esprit - c'est-à-dire que j'ai écrit une grammaire modérément complexe. Je prends toujours l'approche de la croissance d'un programme - un sous-système à la fois. J'ai écrit les structures de données pour un modèle complexe qui a 4 types au plus haut niveau.boost :: spirit composer des grammaires à partir de grammaires

Je voudrais utiliser le grammar composed from rules approach pour analyser les types de niveau supérieur un type à la fois, c'est-à-dire que je veux écrire 4 grammaires avec une grammaire de premier niveau. Si cela est possible (ce dont je commence à douter), quelqu'un pourrait-il afficher un extrait ou une référence à un projet qui le fait? Une grammaire de plus haut niveau avec plus de 50 règles (pour beaucoup plus de choses) ne semble pas amusante (le code TMP est volatile/lent à compiler et fournit des messages d'erreur inutiles).

Répondre

11

simplifié d'un programme réel, Qi devrait fonctionner comme Karma.

template<class Iter> 
struct subgrammar_1 
: karma::grammar<Iter, ...> 
{ 
    ... 
} 

template<class Iter> 
struct top_level_grammar 
: karma::grammar<Iter, ...> 
{ 
    top_level_grammar() : top_level_grammar::base_type(start) 
    { 
     start %= r1 | r2; 
    } 
    karma::rule<Iter, ...> r1; 
    subgrammar_1<Iter> r2; 
    ... 
} 
+0

(+1) Oui, c'est exactement ce que je cherchais: P, je vais essayer quand j'ai un peu de temps. –