C++ 提振:精神(气)在浮球和双打之间的决定
我有一个解析器,可以解析输入文件中的不同数据类型。我已经明白了,spirit可以在short和int之间做出决定,例如:C++ 提振:精神(气)在浮球和双打之间的决定,c++,boost,boost-spirit,boost-spirit-qi,C++,Boost,Boost Spirit,Boost Spirit Qi,我有一个解析器,可以解析输入文件中的不同数据类型。我已经明白了,spirit可以在short和int之间做出决定,例如: value %= (shortIntNode | longIntNode); 与 我也使用这种类型的规则来检测双精度(从答案和答案中)。解析器能够在int(表示数字)>65535和short(表示数字)之间做出决定,词法分析可以有所帮助。最终由您决定,而不是由解析器决定。订购您的分支机构应该会有所帮助。另见 对于具有Boost Spirit的类似解析器 如果您想在f
value %= (shortIntNode | longIntNode);
与
我也使用这种类型的规则来检测双精度(从答案和答案中)。解析器能够在int(表示数字)>65535和short(表示数字)之间做出决定,词法分析可以有所帮助。最终由您决定,而不是由解析器决定。订购您的分支机构应该会有所帮助。另见
词法分析可以有所帮助。最终由您决定,而不是由解析器决定。订购您的分支机构应该会有所帮助。另见
shortIntNode %= (qi::short_ >> !qi::double_)
[qi::_val = phoenix::bind(&CreateShortIntNode, qi::_1)];
longIntNode %= (qi::int_ >> !qi::double_)
[qi::_val = phoenix::bind(&CreateLongIntNode, qi::_1)];
value %= (floatNode | doubleFloatNode);
floatNode %= (qi::float_)
[qi::_val = phoenix::bind(&CreateFloatNode, qi::_1)];
doubleFloatNode %= (qi::double_)
[qi::_val = phoenix::bind(&CreateDoubleFloatNode, qi::_1)];
floatrule = lexeme [ float_ >> 'f' ];
doublerule = double_;
float_or_double = floatrule | doublerule;