我正在写一个词法分析器。它接受一个英文字符串,并将其转换为一组纬度/经度坐标。这有点像谷歌地球。
无论如何,我已经编写了我的符号表和语法,它正在愉快地解析格式化数据。
struct LatLongDegrees
{
std::string dirLat_;
double degLat_;
std::string dirLong_;
double degLong_;
}
例如:{"North", 23.59, "East", -30.82}
这是我的语法:
basic =(latitude >> ' ' >> double_ >> ' ' >> longitude >> ' ' >> double_);
其中纬度和经度是从速记罗盘方向映射到字符串的符号表(例如“e”到“East”)
所以,关于我的问题:
我想在我的语法中添加以下规则,其中纬度和经度符号位于相反的位置:
reversed = (longitude >> ' ' >> double_ >> ' ' >> latitude >> double_ )
这会解析,但 degLat_ 和 degLong_ 值不会与字符串值一起反转。它们只是直接解析到结构中,而不考虑字符串标签。
当要解析的数据不连续时,如何构建结构(或 boost::fusion 向量)?