Next: Running Bison to Make the Parser, Previous: The Controlling Function, Up: Reverse Polish Notation Calculator [Contents][Index]
When yyparse
detects a syntax error, it calls the error reporting
function yyerror
to print an error message (usually but not
always "syntax error"
). It is up to the programmer to supply
yyerror
(see Parser C-Language Interface), so
here is the definition we will use:
#include <stdio.h>
/* Called by yyparse on error. */ void yyerror (char const *s) { fprintf (stderr, "%s\n", s); }
After yyerror
returns, the Bison parser may recover from the error
and continue parsing if the grammar contains a suitable error rule
(see 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 for the first example.