I′m working with Spirit 2.4 and I'd want to parse a structure like this:
Text{text_field};
The point is that in text_field is a escaped string with the symbols '{', '}' and ''.
I would like to create a parser for this using qi. I've been trying this:
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( "\}" );
But doesn't even compile. Any idea?
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…