我正在尝试解析rule表单predicate -> action。
我的问题是它predicate可以是任何有效的数学表达式,因此它实际上可能包含一个减号或一个更大的符号(但我们必须按顺序禁止它们,因为这是我们想要从中分离的标记predicate)action。
本质上,我想predicate消耗所有非空格,直到它碰到 string "->"。
我该怎么做呢?
是修复我在下面评论的行的正确方法,还是我应该根据有效表达式更好地定义 apredicate是什么,并根据该有效表达式让解析器落入"->"何时predicate结束?
rule %=
predicate
>> "->"
>> action
;
predicate %= (+~(qi::char_("-"))); // BAD: works only if no minus sign in predicate
action %= (+(qi::char_));