boost :: esprit la composition de grammaires grammaires
-
24-09-2019 - |
Question
Je l'ai compris comment utiliser l'esprit - à savoir, je l'ai écrit une grammaire modérément complexe. Je prends toujours l'approche de plus en plus un programme - un sous-système à la fois. J'ai écrit les structures de données pour un modèle complexe qui dispose de 4 types au plus haut niveau.
Je voudrais utiliser la grammaire composé des règles approche pour analyser les types de haut niveau d'un type à la fois - à savoir, je veux écrire 4 avec une grammaire grammaires de haut niveau. Si cela est possible (que je commence à douter), quelqu'un pourrait-il s'il vous plaît poster un extrait ou une référence à un projet qui fait cela.
Une grammaire de niveau supérieur avec 50 règles (possible beaucoup plus) (pour la gestion des erreurs correcte) ne semble pas amusant (code TMP est volatil / lent à compiler, et des messages d'erreur inutiles).
La solution
simplifié d'un programme réel, Qi devraient travailler les mêmes que 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;
...
}