- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我想创建一个解析字符串和 float 的 boost spirit 规则。我要解析的字符串格式如下:
(str astring)(n 123)
或者也可以是另一种顺序:
(n 123)(str astring)
我想创建一个具有以下类型属性的规则:
qi::rule<Iter, boost::fusion::vector<std::string, float>, ascii::space_type> hj;
到目前为止,这是我的代码:
qi::rule<Iter, std::string(), ascii::space_type> attr;
attr = lexeme[*alnum];
qi::rule<Iter, boost::fusion::vector<std::string, float>, ascii::space_type> hj;
hj = (
'(' >> lit("str") >> attr(/*put this at position 0*/) >> ')'
|
'(' >> lit("n") >> float_[/*put this at position 1*/] >> ')'
);
显然,这并不能编译(boost 扣除了另一个属性类型)。我该如何实现这一点,特别是我应该在注释代码中添加什么?
最佳答案
您可以使用置换运算符 ^
。最小工作示例:
boost::fusion::vector<std::string,float> ans;
bool res = phrase_parse(first,last,
(lit("(") >> lit("str") >> lexeme[*ascii::alnum] >> lit(")") ) ^
(lit("(") >> lit("n") >> float_ >> lit(")") ),
ascii::space,ans);
更详细地描述了此解决方案 here .
关于c++ - 提振精神或秩序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20243600/
我正在使用此代码将“k1 = v1; k2 = v2; k3 = v3; kn = vn”字符串解析为映射。 qi::phrase_parse( begin,end,
我不理解以下示例中 x3 的行为(取自更大的语法)。 当然,语法有点奇怪,但大致实现了 (lal)?()? .当第二组不存在时,默认为 .我不明白为什么要输入 "lal"我得到 defaultcha
所以我的问题很简单,在我的词法分析器类(扩展 lex::lexer )中,我有以下内容; this->self.add ... ("&&", AND_AND) ("||", O
我正在尝试修改以下示例:http://www.boost.org/doc/libs/1_57_0/libs/spirit/example/qi/employee.cpp 我想在 employee 结构
我正在为当前分支为多个版本的应用程序寻找版本编号方案/模式/系统 shell game样式发布日期。这使得版本控制成为一场噩梦。我想只使用典型的 Major.Minor.Revision 但是这会很快
是的,我开始做这个测试了! 但是我不知道该用什么=/ Rspec + 应该吗? Rspec + 牛排? 迷你测试? cucumber ? capybara ? 可以吗? ( cucumber 与 Sh
我是一名优秀的程序员,十分优秀!