多くの異なるトークンを持つレクサーによって供給されるパーサーがあります。1 つを除くすべてのトークンを解析するパーサーを作成したいと考えています。boost::spirit のドキュメントには、レクサーを使用しない場合の例が示されています。
confix("/*", "*/")[*(char_ - "*/")] // C style comment
confix("//", eol)[*(char_ - eol)] // C++ style comment
2 番目の例では、char_
パーサーはすべての入力を解析するため(char_ - eol)
、行末以外はすべて解析します。
まったく同じ効果を達成したいのですが、任意の入力 tokenを受け入れるパーサーを作成する方法がわかりません。もちろん、すべてのトークンを 1 つのパーサーのオプションとしてリストし、これを「任意のパーサー」として使用することもできます。
ただし、新しいトークンをそれぞれこのパーサーに追加することを覚えておく必要があるため、これは非常にエラーが発生しやすくなります。