je travaille avec l'Esprit 2.4 et je voudrais analyser une structure comme celle-ci:Parsing échappé cordes avec l'esprit boost
texte {text_field};
Le point est que dans text_field est une chaîne échappée avec les symboles '{', '}' et '\'. Je voudrais créer un analyseur pour cela en utilisant le qi. J'ai essayé ceci:
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("\\}");
Mais ne compile même pas. Une idée?
L'erreur du compilateur (et la ligne sur laquelle il est) aiderait. –