我的 flex 文件中有以下规则:
{ID} {printf("(id, \"%s\") [%d]\n", yytext, yylineno); yylval.str = strdup(yytext); return IDENT;}
我的野牛文件中有以下规则:
identificador : IDENT {cout << "identificador : IDENT\n"; cout << $1 << "\n";$$ = $1;}
当它尝试打印$1
时,我收到以下错误:
terminate called after throwing an instance of 'std::logic_error'
what(): basic_string::_S_construct null 无效
$1
对我来说,它看起来像NULL
,但我不明白为什么。这两个文件都非常大,因为语法非常庞大,但如果需要,我可以编辑以添加其他相关部分。