我看不到我的错误..这条规则可以解析一些东西,但最后两个示例就不行了。谁能给我一个提示..
Goal是一个解析器,可以识别成员属性访问和成员函数调用。还以某种方式链接在一起
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 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))]
;谢谢你,马库斯
发布于 2017-10-13 20:06:48
试着改变
>> *(lit('.') >> name_pure >> lit('(') > paralistopt > lit(')'))至
>> *(*(lit('.') >> name_pure) >> lit('(') > paralistopt > lit(')'))https://stackoverflow.com/questions/46729179
复制相似问题