掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
boost::spiritの文法内のセマンティックアクションを自作 (ID:70551)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
他に試した方法としては、関数オブジェクトによる方法です。 先のfの部分を下のように変え、 struct f_obj { std::string& string_buffer; f_obj(std::string& a) : string_buffer(a) { } void operator ()(const char a) const {// string_bufferに操作 string_buffer += a; } }; 更に、 template<typename S> struct definition { f_obj f; typedef boost::spirit::classic::rule<S> rule_t; rule_t A; // 構文解析ルールの記述 definition(const CScriptParser& self) : f(self.name_buffer) { A = boost::spirit::classic::alpha_p[f]; } const rule_t& start() const { return A; } }; という風にルールを記述することで、グローバル変数を使わずに出来ます。 しかし、やはりCScriptParser::name_bufferへのアクセスが複雑な気がしましたので、どうにかメンバ関数が出来ないものかと悶々しているところです。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.