掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
boost::spiritの文法内のセマンティックアクションを自作 (ID:70552)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
> やはりCScriptParser::name_bufferへのアクセスが複雑な気がしましたので、 > どうにかメンバ関数が出来ないものかと悶々しているところです。 メンバ関数へのアクセスは、Phoenixでは例えばこうなるわけですが、 これで満足ですか? これを見比べた上でも、メンバ関数へのアクセスは簡素だと思いますか。 class CScriptParser : public boost::spirit::classic::grammar<CScriptParser> ... int append(char ch)const { name_buffer += ch; return 0; } template<typename S> struct definition { typedef boost::spirit::classic::rule<S> rule_t; rule_t A; // 構文解析ルールの記述 definition(const CScriptParser& self) { phoenix::member_function_ptr<int, const CScriptParser, char> append_ = &CScriptParser::append; A = boost::spirit::classic::alpha_p [append_(phoenix::var(self), phoenix::arg1)]; } ...
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.