我正在尝试解析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_));