yyparse
は、構文エラーを検出すると、エラーメッセージ
(必ずそうとはかぎりませんが、通常は"parse error"
)を
表示するために、エラー報告関数yyerror
を呼び出します。
#include <stdio.h> yyerror (s) /* エラーが起きるとyyparseから呼び出される */ char *s; { printf ("%s\n", s); }
yyerror
から戻った後に、Bison構文解析器は、
文法に適切なエラー規則(see Error Recovery)があれば、
エラーから回復し、解析を継続できます。
そうでない場合には、yyparse
が0でない値を返します。
この例では、エラー規則を書いていないので、
不正な入力はすべて電卓プログラムを終了させます。
これは、実際の電卓としてはきれいな動作ではありませんが、
最初の例としては十分です。