掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
boost::spiritを使っての構文解析器を、1つのクラスにまとめたい (ID:70538)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
パーサをコンストラクタで使い捨てる版をネストさせるとこんな感じ。 class CScriptParser { public: // parse_info boost::spirit::classic::parse_info<> parseInfo; // 構文解析時のトークン保存用 std::string name_buffer; struct Sparser : public boost::spirit::classic::grammar<Sparser> { template<typename S> struct definition { typedef boost::spirit::classic::rule<S> rule_t; rule_t A; // 構文解析ルールの記述 definition(const Sparser& self) { A = boost::spirit::classic::alpha_p[boost::spirit::classic::assign_a(self.name_buffer_)]; } const rule_t& start() const { return A; } }; explicit Sparser(std::string& name_buffer) : name_buffer_(name_buffer) {} std::string& name_buffer_; }; explicit CScriptParser() { Sparser parser(name_buffer); parseInfo = boost::spirit::classic::parse("a", parser, boost::spirit::classic::space_p); } };
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.