"-6ren"> "-我正在尝试解析 predicate -> action 形式的 rule。 我的问题是 predicate 可以是任何有效的数学表达式,因此它实际上可能包含减号或更大的符号(但我们必须按顺序禁止它们因-6ren">
gpt4 book ai didi

c++ - 振奋精神 : how to parse until we have "->"

转载 作者:太空狗 更新时间:2023-10-29 21:25:43 26 4
gpt4 key购买 nike

我正在尝试解析 predicate -> action 形式的 rule

我的问题是 predicate 可以是任何有效的数学表达式,因此它实际上可能包含减号或更大的符号(但我们必须按顺序禁止它们因为这是我们想要将 predicateaction 分开的标记。

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

我是如何做到这一点的?

是修复我在下面评论的行的正确方法,还是我应该根据有效表达式更好地定义什么是 predicate,并让解析器落入 "->"predicate 结束时,根据那个有效的表达式?

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

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

最佳答案

predicate 改写如下:

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

等价地,

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

应该做同样的事情。

查看文档

关于c++ - 振奋精神 : how to parse until we have "->",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13508690/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com