2

これは私のboost::spirit grammarにあります。

paren = (qi::token(LEFT_PAREN) >> character >> qi::token(RIGHT_PAREN)) [ build_paren ]
          ;
character = qi::token(CHARACTER) [ build_character]
          ;

これらは次のように定義されています。

qi::rule<Iterator> paren;
qi::rule<Iterator, char> character;

関数build_parenには、次のプロトタイプがあります (コンパイラのキャスト エラーで見つかりました)。

void build_paren(boost::fusion::vector2<boost::iterator_range<__gnu_cxx::__normal_iterator<char*, std::basic_string<char>>>, boost::iterator_range<__gnu_cxx::__normal_iterator<char*, std::basic_string<char>>>> v)

ここで、ベクトルはそれぞれ 2 つの文字列を保持"(\0"")\0"、これは予想どおりですが、どのようにしてchar一致する文字を取得できますか?

本当に、私のbuild_paran関数に欲しいプロトタイプは次のとおりです。

void build_paren(std::string left_paren, char character, std::string right_paren)

または、同じですcharが、リストの最後の引数として引数を使用します。

4

1 に答える 1