2013年8月1日木曜日

boost::spirit grammar 書くのが、めんどくなってきたのでテスト

はい、boost::spirit も コマンドによって、引数となる構文構造が異なってくると、いちいち grammar 作成するのも大変ですよね? てなわけで、ちまちま phrase_parse にかけながら、コードで処理を分岐しても良いんじゃないかと思い、実験くんしてみました。
#include <boost/spirit/include/qi.hpp>
#include <string>
#include <iostream>

namespace qi = boost::spirit::qi;

int main() {
  std::string test = "put 123 aioue";
  
  auto i = test.begin();
  bool res = qi::phrase_parse( i, test.end(), qi::lit("put"), qi::ascii::space );
  std::cout << res << std::endl;
  std::string rest;
  rest.assign(i,test.end());
  std::cout << rest << std::endl;
  
  return 0;
}
出力は
1
123 aioue
いちおう 構文を qi::lit("get") に変えてみたところ
0
put 123 aioue
となりまして、ちまちまとパースしても行けそうですよね?
ちょっとしたものならば、こちらの方がササッと書けそうです。

0 件のコメント: