我有一个解析器,它由具有许多不同标记的词法分析器提供。我想编写一个解析器来解析除一个之外的任何令牌。boost::spirit 文档为没有词法分析器的情况提供了示例:
confix("/*", "*/")[*(char_ - "*/")] // C style comment
confix("//", eol)[*(char_ - eol)] // C++ style comment
在第二个示例中,char_
解析器解析任何输入,因此(char_ - eol)
解析除行尾之外的任何内容。
我想达到同样的效果,但不知道如何创建一个接受任何输入令牌的解析器。当然,我可以在一个解析器中列出我所有的标记作为选项,并将这个用作“任何解析器”。
但是,这很容易出错,因为我必须记住将每个新标记添加到此解析器。