Domanda

ho capito come utilizzare lo spirito - vale a dire, ho scritto una grammatica complessa moderatamente. Ho sempre prendere l'approccio di crescere un programma - un sottosistema alla volta. Ho scritto le strutture di dati per un modello complesso che dispone di 4 tipi di altissimo livello.

Vorrei utilizzare il grammatica composto dalle regole avvicinano per analizzare il tipo tipi di alto livello alla volta - vale a dire, voglio scrivere 4 grammatiche con livello di grammatica quella superiore. Se questo è possibile (che sto cominciando a dubitare), qualcuno potrebbe si prega di inviare un frammento o un riferimento a un progetto che fa questo.

Un alto livello di grammatica con 50+ (molto possibile di più) le regole (per la corretta gestione degli errori) non suona come divertimento (codice TMP è volatile / lento per compilare, e fornisce messaggi di errore inutili).

È stato utile?

Soluzione

semplificata da un programma vero e proprio, Qi dovrebbe funzionare lo stesso di 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;
    ...
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top