我看到了使用bison变体的以下断言:
....hh:241: T& MAS::MAS_Parser::semantic_type::emplace(U&& ...) [with T = TypedName*; U = {TypedName* const&}]: Assertion `!yytypeid_' failed.
我正在使用野牛2.5,flex 2.5.35和g ++ 4.7.2。
我正在尝试将使用flex构建的C语言扫描仪转换为C ++语言扫描仪。我正在使用变体,而我的规则之一就是
%type <TypedName *> queried_symbol
有一个词法分析器方法可以做到:
TypedeName *t = ...
yylval->build(t);
此代码的执行导致一个断言:
....hh:241: T& MAS::MAS_Parser::semantic_type::emplace(U&& ...) [with T = TypedName*; U = {TypedName* const&}]: Assertion `!yytypeid_' failed.
我尝试用“ yylval-> build(t)”替换“ yylval-> build(t)”,但在行为上没有区别。
我希望代码(无论使用哪种形式)都可以在没有断言的情况下执行,但是我无法辨别其失败的原因,也无法解决该问题。