Pergunta

Eu descobri como usar o espírito - ou seja, escrevi uma gramática moderadamente complexa. Eu sempre adoto a abordagem do crescimento de um programa - um subsistema de cada vez. Escrevi as estruturas de dados para um modelo complexo que possui 4 tipos no nível mais alto.

Eu gostaria de usar o Gramática composta pela abordagem de regras Para analisar os tipos de nível superior um tipo de cada vez - por exemplo, quero escrever 4 gramáticas com uma gramática de nível superior. Se isso for possível (o que estou começando a duvidar), alguém poderia postar um snippet ou uma referência a um projeto que faça isso.

Uma gramática de nível superior com mais de 50 (mais (muito mais) regras (para o manuseio de erros adequada) não parece divertido (o código TMP é volátil / lento para compilar e fornece mensagens de erro inúteis).

Foi útil?

Solução

simplificado de um programa real, Qi deve funcionar da mesma forma que Carma.

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;
    ...
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top