我正在编写一个词法分析器。它接收一个英文字符串,并将其转换为一组纬度/经度坐标。它有点像谷歌地球。
无论如何,我已经编写了我的符号表和语法,它可以愉快地解析格式化数据。
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向量)?