2012-11-22 39 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_)); 

回答