Bir sözcük analizcisi yazıyorum. İngilizce bir dizge alır ve onu bir enlem/boylam koordinat kümesine dönüştürür. Google Earth’e benziyor.boost :: spirit :: qi ve dizi dışı değişkenler
Her neyse, sembol tablolarımı ve dilbilgisi yazdım ve biçimlendirilmiş verileri mutlu bir şekilde böler.
struct LatLongDegrees
{
std::string dirLat_;
double degLat_;
std::string dirLong_;
double degLong_;
}
Örneğin: { "Kuzey", 23.59, "Doğu", -30,82} Burada
benim dilbilgisi geçerli: enlem ve boylam gelen haritasına sembol tabloları vardır
basic =(latitude >> ' ' >> double_ >> ' ' >> longitude >> ' ' >> double_);
dizeleri steno pusula yönleri (örneğin, "e" ile "Doğu")
Yani, soruma tarih:
reversed = (longitude >> ' ' >> double_ >> ' ' >> latitude >> double_)
Bu ayrıştırır ANCAK degLat_ ve degLong_ değerleri dize değerlerini birlikte geri çevrilmez: 10 Ben enlem ve boylam sembolleri karşı pozisyonlarda olan benim gramer, aşağıdaki kural eklemek istiyorum. Bunlar dize etiketleri dikkate alınmadan doğrudan yapıya ayrıştırılır.
Ayrıştırılacak veriler sıralı olmadığında nasıl bir struct (veya boost :: fusion vector) oluştururum?