> -boost::s-6ren">
gpt4 book ai didi

c++ - 振奋 spirit 及相关零件

转载 作者:行者123 更新时间:2023-11-30 01:54:41 26 4
gpt4 key购买 nike

我需要通过 boost spirit 创建一条规则,以匹配以下情况

return foo;

return (foo);

我试过这样的:

start %= "return" >> -boost::spirit::qi::char_('(') >> identifier >> -boost::spirit::qi::char_(')') >> ';';

但是即使在这样的情况下这也会成功

return (foo;

return foo);

我该如何解决?

最佳答案

你的例子看起来只是病态的,因为你使用的是一个过于具体的例子。

实际上,您不会“返回”>> 标识符;。通常,返回的东西只是一个表达式。所以,你会说

expr = literal | variable | function_call;

现在迎合圆括号表达式的一般方法很简单:

expr = literal | variable | function_call
| ('(' >> expr >> ')')
;

砰。完毕。它处理平衡。它处理嵌套的括号。它甚至处理 (((foo)))。那天没有吹口哨

我认为根本没有/任何/错误。我已经在此站点的答案中发布了可能超过 20 个递归的不同表达式语法。他们应该提供激励示例(显示运算符优先级并用这些括号否决它们)。

关于c++ - 振奋 spirit 及相关零件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21757501/

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