(免責事項、私はブースト精神を学んでいます)私はこのような式を解析しようとしています文字列(チー:: as_wstring)として整数を解析しよう
を: F(1)
と1を文字列(数字の代わりに "1"(qi :: int_で動作))として取得したい。
として任意の洞察力を私は(間違っている、多分私は正しい方向にしています)このような何かを試してみましたが、結果の文字列だけではなく、「」
の「\×1」であります数字を文字列に解析するために必要なものは何ですか?
template <typename Iterator>
struct range_parser : boost::spirit::qi::grammar<Iterator, RangeResult(), iso8859_1::space_type>
{
range_parser() : range_parser::base_type(start)
{
using qi::lexeme;
using qi::int_;
using iso8859_1::digit;
number_as_string %= lexeme[ +(int_) ];
start %=
qi::lit("F")
>> '('
>> number_as_string
>> ")"
;
}
qi::rule<Iterator, std::wstring(), iso8859_1::space_type> number_as_string;
qi::rule<Iterator, RangeResult(), iso8859_1::space_type> start;
};
誰かがqi :: as_wstringの部分を削除するためにタイトルを編集できますか?それは関連性がない(私は思う) – Max
'+(int_)(1つ以上の整数)の代わりに' +(digit) '(1つ以上の数字)を書くことを意味すると思います。 'int_'(範囲チェックなし、+/-符号なし)と同じことをしないことに注意してください。 int_で認識される入力を取得する場合は、rawディレクティブを使用してみてください: 'raw [int_]' http://www.boost.org/doc/libs/1_63_0/libs/spirit/doc/html/spirit /qi/reference/directive/raw.html –
(プロジェクトに戻ってきました)ちょっと@BorisGlick、これを答えとして入れて、答えとして受け入れることができますか?ありがとう。おかげさまで – Max