組み込みのパーサー ( 、など)boost::spirit::qi
で構成されるストリームを解析するために to を正常に使用しています。ただし、これらのカテゴリのいずれにも適切に分類されないデータを解析する必要があります。たとえば、16.16 の固定小数点 2 進数を double に変換したいと考えています。たとえば、a に続いて aを解析します (固定小数点数から解析します)。byte_
little_word
little_word << little_16p16
uint16_t
double
私は最初にセマンティック アクションを考えましたが、パーサーに関連付けられた属性の型を変更しないため、適切ではない (と思います...)。また、従業員の構造体解析の例をこの状況に適応させる方法もわかりません。これは、によって提供される暗黙のキャストに依存しているためboost::fusion
です。大きな問題を引き起こさずuint32_t
に toからの暗黙的なキャストを定義することは明らかにできないため、このアプローチはここでは機能しません。double
私の傾向は、組み込みのバイナリ プリミティブ パーサーをラップするか、ターミナル パーサーをゼロから作成するために非ターミナルを追加する必要があるということです。のソースを見た後でも、qi_binary.hpp
どうすればよいかわかりません。誰かがサンプルコードを提供したり、関連する参考文献を教えてくれたりできますか?