yylval-> build(TypedName *)导致“断言`!yytypeid_'失败。”

时间:2019-04-07 18:21:55

标签: c++ variant bisonc++

我看到了使用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)”,但在行为上没有区别。

我希望代码(无论使用哪种形式)都可以在没有断言的情况下执行,但是我无法辨别其失败的原因,也无法解决该问题。

0 个答案:

没有答案