一般情况:我无法弄清楚为什么我的Spirit语法/语义动作没有编译.
有时,编译器会抱怨分配或类型不兼容,我不知道什么是错的.问题出现在两个主要方面:
编译器错误不是完全易处理的,文档是错误的,或者我误解了它.
无论如何,有没有办法确切地找出Spirit传入我的语义行为的方式?
struct mybase { int a,b; };
struct myderived : mybase { int c,d; };
BOOST_FUSION_ADAPT_STRUCT(mybase, (int,a)(int,b));
BOOST_FUSION_ADAPT_STRUCT(myderived, (int,a)(int,b)(int,c)(int,d));
auto base_expr = int_ >> int_; // avoids assigning to struct attribute
rule<decltype(f), mybase() , space_type> base_ = int_ >> int_;
rule<decltype(f), myderived(), space_type> derived_ = base_ >> int_ >> int_;
myderived data;
bool ok = phrase_parse(f,l,derived_,space,data);
Run Code Online (Sandbox Code Playgroud)
此代码无法编译,存在大量难以理解的错误.
(松散地改编自精神总表上的帖子)