Это позволяет создавать несколько адаптаций для одной и той же структуры одновременно.
у лексикографический анализатор. Он берет английскую строку и преобразует ее в набор координат широты / долготы. Это немного похоже на Google Earth.
Во всяком случае, я написал свои таблицы символов и грамматику, и она с удовольствием разбирает отформатированные данные.
struct LatLongDegrees
{
std::string dirLat_;
double degLat_;
std::string dirLong_;
double degLong_;
}
Например: {"Север", 23,59, "Восток", -30,82}
Вот моя грамматика:
basic =(latitude >> ' ' >> double_ >> ' ' >> longitude >> ' ' >> double_);
Где широта и долгота - это таблицы символов, которые отображаются от кратких направлений компаса до строк (например, «e» на «восток»)
Итак, на мой вопрос:
Я хочу добавить следующее правило в мою грамматику, где символы широты и долготы находятся в противоположных позициях:
reversed = (longitude >> ' ' >> double_ >> ' ' >> latitude >> double_ )
Это анализирует, НО значения degLat_ и degLong_ не обращаются вместе со строковыми значениями. Они просто анализируются непосредственно в структуре, без учета строковых меток.
Как построить структуру (или вектор Boost :: Fusion), когда данные для анализа не являются последовательными?