2012-11-22 40 views
3

我正試圖解析的形式predicate -> action助推精神:如何解析,直到我們有「 - >」

我的問題是predicate可以任何有效的數學表達式,所以它實際上可能是一個減號或更大的跡象(但我們要禁止他們在序列因爲這是我們想從action分離predicate令牌)。

本質上,我想predicate消耗所有非空格,直到它遇到字符串"->"

我該如何解決這個問題?

是修復行我有評論如下,或者我應該更好地定義一個predicate是什麼,在一個有效的表達上,並讓解析器落入"->"正確的方法時predicate結束,根據該有效的表達?

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

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

回答