如何从lex / yacc获取更多解析错误信息?

如何从lex / yacc获取更多解析错误信息?

目前在我正在使用的lex文件中:

int yyerror(const char *msg) { fprintf(stderr, "Parse error: %s\n", msg); return 0; } 

但是当我运行我的程序时,yyerror会输出一条空白消息。 我尝试将yylineno和yytext添加到yyerror但这会导致编译错误。 我尝试将“%error-verbose”添加到yacc文件,并将“%option debug”添加到lex文件,但这些对消息没有任何影响。

我确实注意到yyparse输出一个括号:'{‘来自我试图解析的文件,我不知道这个的意义。

我正在使用win_flex和win_bison。

当它显示如何使用yyerror来改进错误消息时, 官方野牛手册中描述了大部分内容。

特别是,它建议您在Bison声明部分中使用%define parse.error verbose来获取增强的错误消息。