Я хочу создать lex::token_def‹>, содержащий последовательности символов, такие как '[' или ']' или '&>'
Я попытался экранировать необходимые символы:
namespace lex = boost::spirit::lex;
enum LexerIDs { ID_IDENTIFIER, ID_WHITESPACE, ID_INTEGER, ID_FLOAT, ID_PUNCTUATOR };
template <typename Lexer>
struct my_lexer : lex::lexer<Lexer>
{
my_lexer() : punctuator("\[|\]|\(|\)|\.|&>|\*\*|\*|\+|-|~|!|/|%|<<|>>|<|>|<=|>=|==|!=")
{
this->self.add(punctuator, ID_PUNCTUATOR);
}
lex::token_def<> punctuator;
};
но это дает мне некоторое предупреждение о нераспознанных экранированных символах и сбое лексической строки с ним. Как я могу сделать это правильно?