【发布时间】:2014-10-20 13:28:11
【问题描述】:
我正在解析带有转义字符的字符串,我希望将 '\xYY' 解析为带有 YY 代码的字符。据我了解,这是 qi::hex 的。但我只需要解析两个后续字符,而不是更多。所以 "\x30kl" 被正确解析,但不是 "\x30fl",因为 qi::hex 解析 '30f',而不仅仅是 '30'。问题是如何限制十六进制解析长度?
这是我的语法:
template <typename Iterator>
struct gram : qi::grammar<Iterator, std::string(), ascii::space_type> {
gram() : gram::base_type(start) {
start %= "'" >> *(string_char) >> "'";
string_char = ("\\" >> qi::char_('\'')) |
("\\x" >> qi::hex) |
(qi::print - "'");
}
qi::rule<Iterator, std::string(), ascii::space_type> string_char, start;
};
这是 Coliru 的链接:http://coliru.stacked-crooked.com/a/ba96c7410c772c87
谢谢!
【问题讨论】:
标签: c++ boost-spirit boost-spirit-qi