boost :: spirit :: qi e variáveis fora de sequência

Estou escrevendo um analisador lexigráfico. Ele pega uma string em inglês e a converte em um conjunto de coordenadas de latitude / longitude. É um pouco como o Google Earth.

De qualquer forma, escrevi minhas tabelas de símbolos e gramática, e felizmente está analisando dados formatados.

struct LatLongDegrees
{
 std::string  dirLat_;
 double   degLat_;
 std::string     dirLong_;
 double   degLong_;
}

Por exemplo: {"Norte", 23,59, "Leste", -30,82}

Aqui está a minha gramática:

 basic =(latitude >> ' ' >> double_ >> ' ' >> longitude >> ' ' >> double_);

Onde latitude e longitude são tabelas de símbolos que mapeiam de direções abreviadas da bússola até seqüências de caracteres (por exemplo, "e" a "Leste")

Então, para a minha pergunta:

Quero adicionar a seguinte regra à minha gramática, onde os símbolos de latitude e longitude estão nas posições opostas:

reversed = (longitude  >> ' ' >> double_ >> ' ' >> latitude >> double_ )

Isso analisa, MAS os valores degLat_ e degLong_ não são revertidos junto com os valores da string. Eles são simplesmente analisados diretamente na estrutura, sem levar em consideração os rótulos das strings.

Como eu construo uma estrutura (ou vetor boost :: fusion) quando os dados a serem analisados não são seqüenciais?

questionAnswers(1)

yourAnswerToTheQuestion