'mismatches'という変数でエラーカウントを維持しようとしています。この変数では、bisonファイルの最初の部分で宣言しています。
私のバイソン文法では、その変数に値を設定します。
次に、bisonファイルの3番目の部分で、main()関数でその値を計算します。これは0です。
私のバイソンファイルの非常に変更された/削減されたバージョン:
%{
extern "C" FILE *yyin;
extern int yylineno;
extern int yynerrs;
int yylex();
// Declare 'mismatches'
int mismatches;
%}
%error-verbose
%%
expression:
expression ADDOP term
{
cout << "Parser is now here. Going to set `mismatches` to 6";
mismatches = 6;
}
| term
;
%%
int main()
{
// Outputs 0
cout << mismatches;
yyparse();
return 1;
}
変数'mismatches'をbisonファイルのすべての部分で使用できるようにするにはどうすればよいですか?