1
我試圖調試我想在Visual Studio項目中使用一個boost ::精神語法:這是我的代碼片段:錯誤激活
#include <boost/spirit/include/classic.hpp>
#include <boost/spirit/include/qi.hpp>
#include <boost/fusion/include/adapt_struct.hpp>
// This is pasted and copied from another header file
namespace StateMachine {
namespace Private {
struct LuaParameterData {
std::wstring name;
std::wstring type;
std::wstring unit;
std::wstring cardinality;
std::wstring value;
};
} // namespace Private
} // namespace StateMachine
BOOST_FUSION_ADAPT_STRUCT(
StateMachine::Private::LuaParameterData,
(std::wstring, name)
(std::wstring, type)
(std::wstring, unit)
(std::wstring, cardinality)
(std::wstring, value)
)
// From here original file continues
namespace StateMachine {
namespace Private {
namespace qi = boost::spirit::qi;
template<typename Iterator>
struct LuaParameterDataParser : qi::grammar<Iterator, LuaParameterData(), qi::ascii::space_type>
{
LuaParameterDataParser() : LuaParameterDataParser::base_type(start)
{
quotedString %= qi::lexeme['"' >> +(qi::ascii::char_ - '"') >> '"'];
start %=
qi::lit("\"parameter\"")
>> ':'
>> '{'
>> qi::lit("\"name\"" ) >> ':' >> quotedString >> ','
>> qi::lit("\"type\"" ) >> ':' >> quotedString >> ','
>> qi::lit("\"unit\"" ) >> ':' >> quotedString >> ','
>> qi::lit("\"cardinality\"") >> ':' >> quotedString >> ','
>> qi::lit("\"value\"" ) >> ':' >> quotedString
>> '}'
;
}
qi::rule<Iterator, std::string(), qi::ascii::space_type> quotedString;
qi::rule<Iterator, LuaParameterData(), qi::ascii::space_type> start;
};
} // namespace Private
} // namespace StateMachine
BOOST_SPIRIT_DEBUG_RULE(StateMachine::Private::LuaParameterDataParser<std::string::const_iterator>::quotedString);
宏BOOST_SPIRIT_DEBUG
在項目屬性中定義。
當我編譯它,我獲得的最後一行下面的錯誤,我用BOOST_SPIRIT_DEBUG_RULE
:
error C3484: syntax error: expected '->' before the return type
error C2061: syntax error : identifier 'register_node'
我不知道如果我做了正確的事情。我想調試我的語法,但是我只看到調試規則的提示(here和here),所以我試圖調整我的代碼。
我做錯了什麼,爲了打印調試信息時我必須做什麼,當我在phrase_parse
上使用這個語法時?
我設置'在項目選項BOOST_SPIRIT_DEBUG'所以它的編譯器使用。我會嘗試你的方法。謝謝你的幫助。 – Jepessen 2015-02-09 13:36:22
它編譯(謝謝),但我沒有得到輸出失敗的解析,我已經設置了'BOOST_SPIRIT_DEBUG'定義,所以我能做什麼?也許我的解析器是錯的? – Jepessen 2015-02-09 22:26:40
我沒有看到任何解釋,如你所示的代碼。你可以發佈SSCCE嗎?因爲它是你不真正解析:) – sehe 2015-02-09 22:32:38