Estoy escribiendo un analizador lexigráfico. Toma una cadena en inglés y la convierte en un conjunto de coordenadas de latitud/longitud. Es un poco como Google Earth.boost :: spirit :: qi y variables fuera de secuencia
De todos modos, he escrito mis tablas de símbolos y gramática, y estoy analizando datos formateados.
struct LatLongDegrees
{
std::string dirLat_;
double degLat_;
std::string dirLong_;
double degLong_;
}
Por ejemplo: { "Norte", 23.59, "Medio", -30,82}
Aquí es mi gramática:
basic =(latitude >> ' ' >> double_ >> ' ' >> longitude >> ' ' >> double_);
Dónde latitud y longitud son tablas de símbolos que se asignan a partir direcciones de la brújula de la taquigrafía en cadenas (por ejemplo, "e" a "Medio")
por lo tanto, a mi pregunta:
Quiero añadir la siguiente regla para mi gramática, donde la latitud y longitud símbolos están en las posiciones opuestas:
reversed = (longitude >> ' ' >> double_ >> ' ' >> latitude >> double_)
Este análisis sintáctico, pero los valores degLat_ y degLong_ no se revierten, junto con los valores de cadena. Simplemente se analizan directamente en la estructura, sin tener en cuenta las etiquetas de cadena.
¿Cómo construyo una estructura (o impulso :: vector de fusión) cuando los datos a analizar no son secuenciales?