我想在一個名爲'mismatches'的變量中保留一個錯誤計數,其中我聲明瞭野牛文件的第一部分。如何在野牛語法中使用聲明的C++變量
在我的野牛語法中,我爲該變量設置了一個值。
然後在野牛文件的第三部分,在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;
}
我應該怎麼做,以便變異的'不匹配'可以用在野牛文件的所有部分?
它已經是。查看生成的文件,將'%{'和'%}'之間的完整塊原樣複製到生成的文件中,並且它應該早於生成的文件(否則,包含頭文件可能會出現問題)。 –
的確我在那裏看到它。從我所看到的,它應該按照預期工作。但是它的值是0.即使我沒有給它賦值,只是'int不匹配',並且嘗試cout <<不匹配;在main()函數中,它表示0(當它應該給我一個未初始化的警告) – sqram
不適用於全局變量,因爲它們被隱式初始化。見例如[這裏](http://www.cplusplus.com/forum/general/7280/)來自Bjarne Stroutrup(C++的創造者)的引用。 –