You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修复Boost::Spirit::X3解析器丢失下划线的问题?

修复方案

问题出在你的commandName_parser规则上:当前规则仅允许下划线出现在命令名的开头连续段,后续字符只能是字母/数字。虽然理论上Pause_ms能被正确匹配,但更合理且通用的写法是允许下划线出现在命令名的任意位置,同时保证命令名以字母或下划线开头(符合常见标识符规范)。

修改后的commandName_parser规则如下:

auto commandName_parser = as<std::string>(x3::lexeme[(x3::alpha | '_') >> *(x3::alnum | '_')]);

规则解释

  • (x3::alpha | '_'):确保命令名以字母或下划线开头,符合标识符的常见定义;
  • *(x3::alnum | '_'):允许后续字符是字母、数字或下划线,覆盖命令名中任意位置出现下划线的场景;
  • x3::lexeme:保证整个命令名的匹配结果被完整保留,不会被skipper干扰。

替换原规则后,解析Pause_ms 400时,cmd.name会正确存储为"Pause_ms"。

内容的提问来源于stack exchange,提问作者mark

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 02:17:04