boost.spirit 파서를 사용하여 구문 분석하는 방법을 배우려고합니다. VisualStudio 2015와 함께 Windows 8.1을 사용하고 있습니다. boost.spirit 설치 문서의 테스트 프로그램을 설치하고 successfuly 컴파일하여 부스트 설치가 잘된 것처럼 보입니다.boost.spirit.parser를 사용할 때 컴파일 오류를 해독 할 수 없습니다.
저는 페이저 사용에 관한 boost.org 튜토리얼을 따라 왔습니다.
'bool boost::function4<R,T0,T1,T2,T3>::operator()(T0,T1,T2,T3) const': cannot convert argument 4 from 'const boost::spirit::unused_type' to 'const boost::spirit::qi::char_class<boost::spirit::tag::char_code<boost::spirit::tag::space,boost::spirit::char_encoding::ascii>> '
어떤 도움을 크게 이해할 수있을 것이다 : 나는 rule.hpp 라인 (304)에서 다음과 같은 오류 메시지가 컴파일 할 때
#include <boost/config/warning_disable.hpp>
#include <boost/spirit/include/qi.hpp>
#include <boost/spirit/include/phoenix_core.hpp>
#include <boost/spirit/include/phoenix_operator.hpp>
#include <boost/spirit/include/phoenix_object.hpp>
namespace qi = boost::spirit::qi;
namespace ascii = boost::spirit::ascii;
template <typename Iterator>
bool myParser(Iterator first, Iterator last) {
using qi::double_;
qi::rule<Iterator, double(), ascii::space_type> myrule;
myrule %= double_;
bool r = parse(first, last, myrule, ascii::space);
return r;
}
int main() {
std::string dstr = std::string("2.1");
bool r = myParser(dstr.begin(), dstr.end());
return 0;
}
: 나는 두 번을 구문 분석하는 다음 코드를 만들었습니다. 감사합니다
'myrule % = double_;':-D ... 나는 표준 C++ 라이브러리로 만들기 위해 부스트 정신을 기다릴 수 없다. – 6502
@ 6502 왜 그런 일이 일어 났을 까? (또한 EDSL 구문의 선택에있어 아주 약간의 잘못이있다.) %%'는 기발하다. 그러나 의미는 그렇다; 전혀 사용하지 않아야한다.) – sehe