12

私は精神の使い方を理解しました。つまり、適度に複雑な文法を書きました。私は常にプログラムを成長させるアプローチを取ります-一度に1つのサブシステム。最高レベルで4つのタイプを持つ複雑なモデルのデータ構造を記述しました。

ルールアプローチから構成された文法を使用して、一度に1つのタイプのトップレベルタイプを解析したいと思います。つまり、1つのトップレベルグラマーで4つのグラマーを記述したいと思います。これが可能である場合(私は疑い始めています)、誰かがこれを行うプロジェクトへのスニペットまたは参照を投稿してください。

50以上の(もっと多くの可能性がある)ルール(適切なエラー処理のため)を備えた1つのトップレベルの文法は、面白そうに聞こえません(TMPコードは揮発性/コンパイルが遅く、役に立たないエラーメッセージを提供します)。

4

1 に答える 1

11

実際のプログラムから単純化すると、Qiは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;
    ...
}
于 2010-02-01T11:58:12.287 に答える