입력 파일과 다른 데이터 형식을 파싱하는 파서가 있습니다. 난 이미 그 정신은, 예를 들어, 짧고 INT 사이에 결정할 수 있습니다 알아 냈 :float와 double 사이의 boost :: spirit (qi) 결정
value %= (shortIntNode | longIntNode);
내가 답변에서 (뿐만 아니라 복식을 감지하는 규칙의이 유형을 사용
shortIntNode %= (qi::short_ >> !qi::double_)
[qi::_val = phoenix::bind(&CreateShortIntNode, qi::_1)];
longIntNode %= (qi::int_ >> !qi::double_)
[qi::_val = phoenix::bind(&CreateLongIntNode, qi::_1)];
와
here 및
here). 파서는 int> 65535의 숫자와 < = 65535의 short를 int 사이에서 결정할 수있었습니다. 그러나 float_ 및 double_의 경우 예상대로 작동하지 않습니다.
value %= (floatNode | doubleFloatNode);
floatNode %= (qi::float_)
[qi::_val = phoenix::bind(&CreateFloatNode, qi::_1)];
doubleFloatNode %= (qi::double_)
[qi::_val = phoenix::bind(&CreateDoubleFloatNode, qi::_1)];
과 옵션이나 다른 트릭처럼 뭔가가 있다면 당신은 알고 계십니까 :이 같은 규칙이있는 경우는, float 값으로 구문 분석이 값을 반올림 데이터 유형 범위에 따라 float_와 double_ 사이를 결정 하시겠습니까?
대단히 감사합니다!