我正在用Bison編寫解析器,並且收到以下警告。野牛語法警告
fol.y:42 parser name defined to default :"parse"
fol.y:61: warning: type clash ('' 'pred') on default action
我一直在使用谷歌搜索的方式來擺脫他們,但幾乎都空手而歸他們的意思(更不用說如何解決這些問題),因爲每一個崗位,我發現他們有一個編譯錯誤,並警告他們自己沒有解決。有人能告訴我他們的意思,以及如何解決它們?相關代碼如下。 61行是最後一個分號。我刪除了其餘的語法,因爲它非常冗長。
%union {
char* var;
char* name;
char* pred;
}
%token <var> VARIABLE
%token <name> NAME
%token <pred> PRED
%%
fol:
declines clauses {cout << "Done parsing with file" << endl;}
;
declines:
declines decline
|decline
;
decline:
PRED decs
;
我可以找到沒有例子,使用%開始解析(我不知道在哪裏包括它,只是把它放在頂部導致glibc錯誤),至於其他警告我有其他規則看起來相同下降並下降,但沒有產生錯誤。 – user381261 2012-04-20 00:48:42
您可能會在'%token'行之後放置'%start',儘管如果啓動規則也是語法中的第一條規則,則不需要。但由於我們無法看到產生該警告的內容,因此我們無法輕鬆幫助您解決問題。同樣,與其他問題;在保留問題的同時修剪語法,你有點過於熱情。考慮到上面的代碼,'clauses'和'decs'都被使用,但'沒有被定義爲一個標記並且沒有規則'。添加規則'decs:NAME;'和'子句:VARIABLE;'不能幫助診斷問題; '野牛'編譯語法沒有警告。 – 2012-04-20 03:07:09