내 규칙의 spirit lex example 4토큰 파서 세만 틱 액션
하나에 표시된 코드를 기반으로 작업 토큰 파서를 쓴이 잘 작동이
set_name
= ( tok.set_ >> tok.name_ >> tok.identifier)
[
std::cout << val("set name statement to: ") << _3 << "\n"
]
;
것 같습니다.
지금은 클래스에있는 이름을, 유용한 무언가를 저장할
XYZ :SET NAME xyz
되게 때 내가
세트 이름 문을 예상대로 출력합니다. parser semantic examples에서 근무 나는이
1>C:\Program Files\boost\boost_1_44\boost/bind/bind.hpp(318) : error C2664: 'R boost::_mfi::cmf1::operator()(const U &,A1) const' : cannot convert parameter 2 from 'bool' to 'const std::basic_string ' 1> with 1> [ 1> R=void, 1> T=eCrew::rule::writer, 1> A1=const std::string &, 1> U=eCrew::rule::writer * 1> ] 1> and 1> [ 1> _Elem=char, 1> _Traits=std::char_traits, 1> _Ax=std::allocator 1> ] 1> Reason: cannot convert from 'bool' to 'const std::string' 1> No constructor could take the source type, or constructor overload resolution was ambiguous를 컴파일되지 않습니다
class writer { public: void print(string const& s) const { std::cout << s << std::endl; } }; writer w; ... set_name = ( tok.set_ >> tok.name_ >> tok.identifier) [ boost::bind(&writer::print, &w, ::_3) ] ;
이 코드는 왜 컴파일러는 문자열 부울로 변환하려고에 대해 불평 쓰기? 내가 볼 수있는 bool이 없습니다.
std::cout << val("set name statement to: ") << _3 << "\n"
에
은 부울로 다시 선언되고 승입니까? 작가에게 더 독특한 변수 이름을 사용하면 어떻게됩니까? –
@jon이 "the_writer"로 "w"변경되었습니다. 같은 결과. – ravenspoint