【发布时间】:2014-11-27 14:40:35
【问题描述】:
有什么方法可以防止 boost::fusion 在某些输入上溢出堆栈?我的语法类似于
S -> S OR S
S -> a
在大量输入(> 1500 OR'd 项目)时它会崩溃。我不想解析如此庞大的输入,但我需要以某种方式防止进程崩溃。
我可能可以将字符串限制为一定长度,但这并不能解决我的问题,因为a 可能很长。
【问题讨论】:
-
首先,这不是融合崩溃,而是 Spirit(或者更具体地说,是您的规则)。显示您的代码 (SSCCE),我会尝试修复它。
-
看起来您正在解析布尔表达式。你有没有看过Boolean Expression grammar with Boost Spirit 的想法?还有一个followup that does evaluation
标签: c++ parsing boost grammar boost-spirit