2014-07-16 8 views
1

시맨틱 액션에서 공장 기능을 사용하고 싶습니다만 피닉스 또는 퓨전을 사용하여 올바른 제조법을 찾을 수 없었습니다. 같이 보일 것이다spirit이 ADAPT_STRUCT 대신 Factory를 사용하여 규칙을 처리 할 수 ​​있습니까?

내 정신 제나라 규칙 : 포함하는 구조를 만드는 대신 BOOST_FUSION_ADAPT_STRUCT를 사용

object = Factory(type_identifier)(arg_list) 

:

object = type_identifier >> arg_list; 

나는 퓨전 같은 것을 수행하도록하고 싶습니다 type_identifierarg_list.

어떻게하면 되나요? 감사.

+0

당신이 작은 샘플을 제공하는 경우 우리는보다 구체적인 패션 – sehe

답변

2

예. 원칙적으로 세 가지 방법이 있습니다 :

  1. 는 의미 조치를 사용하는 public 생성자에 의존하는 (예를 들어 qi::int_ [ qi::_val = boost::phoenix::construct<type_identifier>(qi::_1) ])
  2. 사용 변환 특성은 [워드 프로세서에서 Customization of Spirit's Attribute Handling 참조) 때문이다. 이 경우 당신은 단순히 과제를 처리

    qi::rule<It, Mytype()> r = qi::_int; 
    

    하고 해당 특성 (assign_to_attribute_from_value<MyType, imt>)가 줄

+0

transformation_attribute의 질문에 대답 도움이 될 수 있습니다 형질은 내가 필요로하는 것이었다. [parse_date] (http://www.boost.org/doc/libs/1_55_0/libs/spirit/example/qi/parse_date.cpp) 예제는 매우 도움이되었지만, 무엇을해야할지 몰랐습니다. 무리 감사! – KentH