我有这个简单的解析器,旨在解析VB风格双引号字符串。因此,解析器应该把类似这个简单的boost :: spirit :: qi解析器有什么问题?
"This is a quoted string containing quotes ("" "")"
成
This is a quoted string containing quotes (" ")
这里的输出是我想出了这个语法:
namespace qi = boost::spirit::qi;
namespace wide = qi::standard_wide;
class ConfigurationParser : public qi::grammar<std::wstring::iterator, std::wstring()>
{
qi::rule<std::wstring::iterator, std::wstring()> quotedString;
qi::rule<std::wstring::iterator> doubleQuote;
public:
ConfigurationParser() : ConfigurationParser::base_type(quotedString, "vFind Command Line")
{
doubleQuote = (wide::char_(L'"') >> wide::char_(L'"'));
quotedString = L'"' >> +(doubleQuote[qi::_val = L'"'] | (wide::char_ - L'"'))>> L'"';
}
};
不过,我的属性m得到的是单引号(“),而不是完整的解析消息。
除了'std :: wstring'没有从'wchar_t'分配成员的事实,这种情况才有意义... – 2010-06-30 13:29:12
对,所以我很可能关闭了。 – 2010-06-30 13:51:03