Giriş
Şu satırı dahil ederiz.
Diğer parametreler out tipindendir.
qi::phrase_parse metodundan farklı olarak bir skipper parametresi almaz. Boşlukları gramer'in ele alacağı varsayılır.
parse - iterator + iterator + rule + out1 + out2 + out3
Şöyle yaparız.
bool döner. Şöyle yaparız.
Şu satırı dahil ederiz.
#include <boost/spirit/include/qi.hpp>
Kolay kullanım için şu satırı dahil ederiz.namespace qi = boost::spirit::qi;
Birinci parametre iterator, ikinci parametre iterator, üçüncü parametre qi::rule tipidir.Diğer parametreler out tipindendir.
qi::phrase_parse metodundan farklı olarak bir skipper parametresi almaz. Boşlukları gramer'in ele alacağı varsayılır.
parse - iterator + iterator + rule + out1 + out2 + out3
Şöyle yaparız.
std::string s = "A:1 B:2 C:3";
int a, b;
boost::optional<int> c;
if (!qi::parse(s.begin(), s.end(),
qi::lit("A:") >> qi::int_ >> +qi::space >> "B:" >> qi::int_ >>
-(+qi::space >> "C:" >> qi::int_), a, b, c))
{
std::cout << "failed to parse" << std::endl;
}
Return Typebool döner. Şöyle yaparız.
qi::rule<std::string::const_iterator, std::string> term = ...;
std::string str = ...
std::string h;
auto f = str.begin(), l = str.end();
bool ok = qi::parse(f, l, term(0u), h);
if (ok)
std::cout << "Ok: " << h << "\n";
else
std::cout << "Fail\n";
if (f != l)
std::cout << "Remaining unparsed: '" << std::string(f, std::min(f + 40, l));
Hiç yorum yok:
Yorum Gönder