数式の評価を便利な道具で #7
%destructor宣言でエラー時に残る解析用スタック内のシンボルの後始末ができるようになった。
しかし、
$ ./calc [lexer] init(003E24D0) 1 2 [lexer] set(003E24D0) [parser] init(003E2540) [parser] set(003E2540) [lexer] set(003E24D0) syntax error [parser] error_recovery_clear(003E2540) [parser] error_recovery_clear(003E24D0) [lexer] clear(003E24D0) $
この場合は、yylvalのmpz_tまでclearされてしまう。
yylvalは字句解析器の方で最初に一度初期化した後は終了するまでclearしないようにしているので、
構文解析器の方でclearすると、再初期化せずにyylvalを使用したり、
上の例のように二重にclearすることになってしまう。