Contents | < Browse | Browse >
The Error Reporting Routine
---------------------------
When `yyparse' detects a syntax error, it calls the error reporting
function `yyerror' to print an error message (usually but not always
`"parse error"'). It is up to the programmer to supply `yyerror'
(Interface), so here is the
definition we will use:
#include <stdio.h>
yyerror (s) /* Called by yyparse on error */
char *s;
{
printf ("%sn", s);
}
After `yyerror' returns, the Bison parser may recover from the error
and continue parsing if the grammar contains a suitable error rule
(Error Recovery). Otherwise, `yyparse' returns nonzero. We
have not written any error rules in this example, so any invalid input
will cause the calculator program to exit. This is not clean behavior
for a real calculator, but it is adequate in the first example.