Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/163.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 提振:精神(气)在浮球和双打之间的决定_C++_Boost_Boost Spirit_Boost Spirit Qi - Fatal编程技术网

C++ 提振:精神(气)在浮球和双打之间的决定

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

我有一个解析器,可以解析输入文件中的不同数据类型。我已经明白了,spirit可以在short和int之间做出决定,例如:

value %= (shortIntNode | longIntNode);


我也使用这种类型的规则来检测双精度(从答案和答案中)。解析器能够在int(表示数字)>65535和short(表示数字)之间做出决定,词法分析可以有所帮助。最终由您决定,而不是由解析器决定。订购您的分支机构应该会有所帮助。另见

对于具有Boost Spirit的类似解析器

如果您想在float/double之间做出决定,则没有真正的输入标准。我建议总是解析为double。但是,您当然可以使用语义操作强制浮动一定的大小

这就是C++语法所做的事情(例如):


词法分析可以有所帮助。最终由您决定,而不是由解析器决定。订购您的分支机构应该会有所帮助。另见

对于具有Boost Spirit的类似解析器

如果您想在float/double之间做出决定,则没有真正的输入标准。我建议总是解析为double。但是,您当然可以使用语义操作强制浮动一定的大小

这就是C++语法所做的事情(例如):

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;