以下是一个示例Bison规则和C代码,说明了如何调用yyerror函数并打印成功信息:
%{
#include
int yyerror(const char *s) { fprintf(stderr, "Error: %s\n", s); return 0; }
%}
%start program
%%
program: statement_list { printf("Program parsed successfully!\n"); return 0; } ;
statement_list: statement | statement_list statement ;
statement: expression ';' ;
expression: NAME '=' NUMBER ;
NAME: [a-zA-Z]+ ;
NUMBER: [0-9]+ ;
%%
int main() { yyparse(); return 0; }
在这个例子中,当Bison解析一个程序时,它将调用statement_list规则。如果任何语法错误发生,Bison将调用yyerror函数,并在stderr流中打印错误消息。如果没有错误发生,它将在stdout流中打印一条成功消息,以表明程序已成功解析。