Giriş
Şu satırı dahil ederiz.
spirit qi grammar struct yazısına taşıdım.
Character Parserlar
qi::char_
Tek bir karakteri okumak için şöyle yaparız.
qi::alnum
qi spirit Character Sınıflandırma Parserları yazısına taşıdım.
qi::alpha
qi spirit Character Sınıflandırma Parserları yazısına taşıdım.
Numeric Parserlar
qi::double_
Şöyle yaparız.
qi::eps
Şöyle yaparız. Her türlü boşluğu atla ve integer parse et anlamına gelir.
List Operator
alpha , alpha , alpha şeklinde bir listeyi ifade etmemizi sağlar. Şöyle yaparız.
Şu satırı dahil ederiz.
#include <boost/spirit/include/qi.hpp>
Daha kolay kullanmak için şöyle yaparız.namespace qi = boost::spirit::qi;
qi::grammarspirit qi grammar struct yazısına taşıdım.
Character Parserlar
qi::char_
Tek bir karakteri okumak için şöyle yaparız.
ch_p("(")
Belirtilen karakter olmadığı müddetçe okumak için şöyle yaparız.*~ch_p("]")
Arka arkaya karakterleri okumak için şöyle yaparız.'x' >> 'y' >> 'z'
qi::lit
Şöyle tanımlarız.
...
id_p = +qi::alpha;
enum_specifier = qi::lit("enum") >> '{' >> (id_p % ',') >> '}';
...
qi::rule<Iterator, std::vector<std::string>(), Skipper> enum_specifier;
qi::rule<Iterator, std::string()> id_p;
...
Character Sınıflandırma Parserlarqi spirit Character Sınıflandırma Parserları yazısına taşıdım.
qi::alpha
qi spirit Character Sınıflandırma Parserları yazısına taşıdım.
Numeric Parserlar
qi::double_
Şöyle yaparız.
(double_ >> ',' >> double_ >> ',' >> double_)
Auxilary Parserlarqi::eps
Şöyle yaparız. Her türlü boşluğu atla ve integer parse et anlamına gelir.
start %= qi::eps > qi::int_[boost::bind(&checkNum, _1)];
qi::eoi
End of input demek. Şöyle yaparız.
#include <boost/spirit/include/qi.hpp>
template <typename Iterator> bool myParser(Iterator first, Iterator last) {
namespace qi = boost::spirit::qi;
return qi::parse(first, last, qi::double_ >> qi::eoi);
}
int main() {
std::string const dstr("2.1");
bool r = myParser(dstr.begin(), dstr.end());
return r?0:1;
}
Parser OperatorsList Operator
alpha , alpha , alpha şeklinde bir listeyi ifade etmemizi sağlar. Şöyle yaparız.
id_p = +qi::alpha;
enum_specifier = qi::lit("enum") >> '{' >> (id_p % ',') >> '}';
Hiç yorum yok:
Yorum Gönder