Я работаю с Spirit 2.4 и хотел бы проанализировать структуру, подобную этой:
Text {text_field};
Дело в том, что в text_field есть экранированная строка с символами '{', '}' и '\'.Я хотел бы создать парсер для этого с помощью ци.Я пытался это:
using boost::spirit::standard::char_;
using boost::spirit::standard::string;
using qi::lexeme;
using qi::lit;
qi::rule< IteratorT, std::string(), ascii::space_type > text;
qi::rule< IteratorT, std::string(), ascii::space_type > content;
qi::rule< IteratorT, std::string(), ascii::space_type > escChar;
text %=
lit( "Text" ) >> '{' >>
content >>
"};"
;
content %= lexeme[ +( +(char_ - ( lit( '\\' ) | '}' ) ) >> escChar ) ];
escChar %= string( "\\\\" )
| string( "\\{" )
| string( "\\}" );
Но даже не компилируется.Есть идеи?