3

多くの異なるトークンを持つレクサーによって供給されるパーサーがあります。1 つを除くすべてのトークンを解析するパーサーを作成したいと考えています。boost::spirit のドキュメントには、レクサーを使用しない場合の例が示されています。

confix("/*", "*/")[*(char_ - "*/")]  // C style comment

confix("//", eol)[*(char_ - eol)]    // C++ style comment

2 番目の例では、char_パーサーはすべての入力を解析するため(char_ - eol)、行末以外はすべて解析します。

まったく同じ効果を達成したいのですが、任意の入力 tokenを受け入れるパーサーを作成する方法がわかりません。もちろん、すべてのトークンを 1 つのパーサーのオプションとしてリストし、これを「任意のパーサー」として使用することもできます。

ただし、新しいトークンをそれぞれこのパーサーに追加することを覚えておく必要があるため、これは非常にエラーが発生しやすくなります。

4

0 に答える 0