boost::spirit::qi
を使用して、組み込みパーサーで構成されるストリームを解析することに成功しました(byte_
、little_word
など)。しかし、私は今これらのカテゴリの1つにうまく収まらないデータを解析する必要があります。例えば、私は16.16の固定小数点2進数を2倍に変換したいと思います。例えばそうlittle_word << little_16p16
はdouble
(固定小数点数から解析)し、続いてuint16_t
を解析することになります。boost :: spiritでバイナリを解析するときに属性タイプを変更する
私はまずセマンティックアクションを考えましたが、パーサーに関連付けられた属性のタイプを変更しないため、意味的なアクションは適切ではないと思いました。 boost::fusion
によって提供される暗黙的なキャストに依存するため、employee struct-parsing exampleをこのような状況に適応させる方法もわかりません。このアプローチは、明らかに暗黙のキャストをuint32_t
からdouble
に定義することができないため、ここでは機能しません。
私の傾斜は、私は、組み込みのバイナリ原始的なパーサーをラップするか、最初からターミナルパーサを書くために非端子を追加する必要があるということです。 qi_binary.hpp
の出所を見た後でさえ、私はどちらかを行う方法がわかりません。誰かがサンプルコードを提供したり、関連する参考文献に私を案内したりすることができますか?
ありがとう! 'ascii :: space_type'テンプレート・パラメータを削除し、適切な' operator() '関数を置き換えることで、サンプル・コードを私が望むものにすることができました。 –