2012-11-22 2 views
3

predicate -> action 형태의 rule을 구문 분석하려고합니다.부스트 스피릿 : 우리가 "~>"까지 구문 분석하는 방법

내 문제는 마이너스 기호 또는 더 큰 기호를 포함 실제로 할 수 있도록 predicate는, 유효한 수식수 있다는 것입니다 (하지만 우리는 우리가 action에서 predicate을 분리 할 토큰의로 순서를 허용해야).

기본적으로 은 "->" 문자열에 도달 할 때까지 공백이 아닌 모든 문자를 사용합니다.

어떻게해야합니까?

"->"로 파서 가을을 유효한 표현의 측면에서, 내가 아래에 댓글을 달았 또는 내가 더 나은 predicate가 무엇인지 정의해야합니다 라인을 수정하고, 할 수있는 권리 접근 할 때 predicate 끝이 유효한 식에 따라 ?

rule %= 
    predicate 
    >> "->" 
    >> action 
    ; 

predicate %= (+~(qi::char_("-"))); // BAD: works only if no minus sign in predicate 
action %= (+(qi::char_)); 

답변

3

바꿔 predicate는 다음과 같이 동등하게

predicate = +(qi::char_ - "->"); 
action = +(qi::char_); 

,

predicate = +(!qi::lit("->") >> qi::char_); 

를 동일한 작업을 수행해야합니다.

이 문서가

+0

우수한보기 - tyvm을 – kfmfe04

관련 문제