我在我的Bison文件中定义了yyerror()
:
parser.y
...
%code {
void yyerror(YYLTYPE* yyllocp, yyscan_t unused, const char** errorReturn, const char* msg);
}
...
void yyerror(YYLTYPE* yyllocp, yyscan_t unused, const char** errorReturn, const char* msg) {
...
}
如果可能的话,我想用自定义消息在我的flex文件中调用它:
flex.l
%option reentrant bison-bridge bison-locations
...
"]" return TOKEN(TCLOSEINDEX);
. {yyerror("Unknown token");}
%%
我如何才能做到这一点?
发布于 2021-04-28 03:32:37
如果您将yyerror
的声明放在%code provides
块中,而不是默认的%code
块中,它将被复制到生成的头文件中,这将使其定义可用于您的扫描器实现。(您需要provides
而不是requires
,因为声明依赖于YYLTYPE
的声明。)
当然,您需要使用它所需的所有参数来调用它。
https://stackoverflow.com/questions/67289055
复制相似问题