私は辞書的アナライザーを書いています。英語の文字列を受け取り、それを一連の緯度/経度座標に変換します。Google Earth に少し似ています。
とにかく、記号表と文法を書き、書式設定されたデータを喜んで解析しています。
struct LatLongDegrees
{
std::string dirLat_;
double degLat_;
std::string dirLong_;
double degLong_;
}
例: {"北", 23.59, "東", -30.82}
これが私の文法です:
basic =(latitude >> ' ' >> double_ >> ' ' >> longitude >> ' ' >> double_);
緯度と経度は、省略形のコンパス方向から文字列にマップするシンボル テーブルです (例: "e" から "East")。
それで、私の質問に進みます:
緯度と経度の記号が反対の位置にある次の規則を文法に追加したいと思います。
reversed = (longitude >> ' ' >> double_ >> ' ' >> latitude >> double_ )
これは解析しますが、degLat_ と degLong_ の値は文字列値と一緒に反転されません。それらは、文字列ラベルに関係なく、単純に構造体に直接解析されます。
解析するデータがシーケンシャルでない場合、構造体 (または boost::fusion ベクトル) を構築するにはどうすればよいですか?