掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
boost::spiritを使っての構文解析器を、1つのクラスにまとめたい (ID:70532)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
BoostのSpiritに関する質問です。 Spiritの機能を1つのクラスにまとめ、最終的には“1つの文字列を受け取り、それを解析し、独自のルールに従って区切り、区切ったものをメンバ変数に保持”したいと思っています。 具体的には、 typedef class CScriptParser { public: // parse_info boost::spirit::parse_info<> parseInfo; // 構文解析時のトークン保存用 std::string name_buffer; struct Sparser : public boost::spirit::grammar<Sparser> { template<typename S> struct definition { typedef boost::spirit::rule<S> rule_t; rule_t A; // 構文解析ルールの記述 definition(const Sparser& self) { A = boost::spirit::alpha_p;//[&func]; } const rule_t& start() const { return A; } }; }; Sparser parser; } CScriptParser; こういう様なクラスを作りたいと思っています(もちろん、後々に拡張していきますが)。 セマンティックアクション(上のクラスで言えば、func)を考えなければ問題なかったのですが、セマンティックアクションが絡んできた途端に分からなくなってしまいました。 どうにか、CScriptParser内のname_bufferに解析した値を持たせることはできないでしょうか。 (グローバル変数にて実装するようなやり方では出来たのですが、グローバル変数を用いない方法はないでしょうか)。 よろしくお願いします。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.