首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >未应用Boost spirit解析规则

未应用Boost spirit解析规则
EN

Stack Overflow用户
提问于 2017-10-13 19:43:57
回答 1查看 196关注 0票数 1

我看不到我的错误..这条规则可以解析一些东西,但最后两个示例就不行了。谁能给我一个提示..

Goal是一个解析器,可以识别成员属性访问和成员函数调用。还以某种方式链接在一起

代码语言:javascript
复制
 a()
 a(para)
 x.a()
 x.a(para)
 x.a(para).g(para).j()
 x.y
 x.y.z
 x.y.z()    <---fail
 y.z.z(para) <--- fail
代码语言:javascript
复制
  lvalue =
         iter_pos >> name[_val = _1]
          >> *(lit('(') > paralistopt  > lit(')') >> iter_pos)[_val = construct<common_node>(type_cmd_fnc_call, LOCATION_NODE_ITER(_val, _2), key_this, construct<common_node>(_val), key_parameter, construct<std::vector<common_node> >(_1))]        
       >> *(lit('.') >> name_pure >> lit('(') > paralistopt > lit(')') >> iter_pos)[_val = construct<common_node>(type_cmd_fnc_call, LOCATION_NODE_ITER(_val, _3), key_this, construct<common_node>(_val), key_callname, construct<std::wstring>(_1), key_parameter, construct<std::vector<common_node> >(_2))]
       >> *(lit('.') >> name_pure >> iter_pos)[_val = construct<common_node>(type_cmd_dot_call, LOCATION_NODE_ITER(_val, _2), key_this, construct<common_node>(_val), key_propname, construct<std::wstring>(_1))]
    ;

谢谢你,马库斯

EN

回答 1

Stack Overflow用户

发布于 2017-10-13 20:06:48

试着改变

代码语言:javascript
复制
>> *(lit('.') >> name_pure >> lit('(') > paralistopt > lit(')'))

代码语言:javascript
复制
>> *(*(lit('.') >> name_pure) >> lit('(') > paralistopt > lit(')'))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46729179

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档