Compiler construction 如何使用yyerror说明更多有关解析错误的信息

Compiler construction 如何使用yyerror说明更多有关解析错误的信息,compiler-construction,bison,yacc,Compiler Construction,Bison,Yacc,所以我写了所有我想要的语法,一切都很顺利。 当遇到语法问题时,我绝对不会采取任何行动 这是我的yyerror函数的定义 int yyerror (const char *s) { printf("parser error %s \n ",s); return 0; } 好吧,我在某个地方读到,如果我想获得有关解析器遇到的错误的更多信息,我需要添加%error verbose

所以我写了所有我想要的语法,一切都很顺利。 当遇到语法问题时,我绝对不会采取任何行动

这是我的yyerror函数的定义

int yyerror (const char *s)
{                                                     
    printf("parser error %s \n ",s);
    return 0;
}
好吧,我在某个地方读到,如果我想获得有关解析器遇到的错误的更多信息,我需要添加%error verbose;当我试图添加它时,我收到了这个错误消息

错误:无法识别:%error\u详细

考虑到我使用的是Flex、Bison,并已将它们与VS2010连接起来

编辑:即使错误提到错误详细,我还是确保传递错误详细,用破折号而不是下划线。

%error verbose
,用破折号,但您的错误消息显示的是下划线。

奇怪的是,当我在Linux的最新bison版本上尝试%error verbose时,它工作得很好,但不适用于Windows版本。

不确定这是否是我在Windows上使用的版本中的错误,或者它只是不受支持的功能。

我确实确定了,尽管我添加了%error verbose Bison,但它提到它遇到了%error\u verbose…可能只是您在Windows上使用的Bison的一个古老版本
bison——命令行上的version
应该告诉您它是什么版本。