0

Boost Spirit の Qi パーサーの文法は素晴らしく、私はいつもそれらを小さなことのために使用しています。ただし、別の文法を作成できるようにしたい場合もあります。

これは、適切な文法を #include してそれらをつなぎ合わせることにより、1 回のコンパイルで簡単にオールインワンで実行できます。ただし、これにより、コンパイル時間が屋根を通過し始めます。他にも欠点があります。

個別にコンパイルされた文法を構成する方法はありますか? 言い換えれば、ヘッダー ファイルで文法のインターフェイスを定義し、テンプレートを実装し、別のコンパイル ユニットで特定の Iterator のインスタンスを作成してから、完全なテンプレートがなくても、別の文法を使用できるようにしたいと考えています。定義はコンパイル時に表示されます。つまり、文法をルールで間接的に使用できるようにしたいのです。

そのようなことは可能ですか?もしそうなら、どのようにそれについて行くでしょうか?

4

1 に答える 1

1

これは Spirit に固有のものではなく、C++ 101 に固有のものだと思います。複数の文法を作成する必要がある場合は、作成中に使用する文法を定義する対応するヘッダー ファイルを含める必要があります。あなたがやりたいことは、文法コンストラクターのコンパイルを別のコンパイル単位に分離することです。これを行う方法については、Spirit Calculator の例 (mini_c など) を参照してください。これにより、コンパイル時間が短縮されます。

于 2011-06-26T09:09:47.953 に答える