2011-11-28 73 views
0

當我運行野牛-d myfile.y它提供了以下錯誤:野牛:M4:無效的參數。我認爲這個問題是運營商的優先,但我仍然無法解決問題。 使*函數創建命題邏輯表達式。解析器命題邏輯

YACC文件:

%{ 
#include "global.h" 
#include "PLResolution.h" 
%} 

%token END 
%token LEFT_PAREN RIGHT_PAREN 
%token BICOND 
%token FORWARD_IMPLIC BACKWARD_IMPLIC 
%token OR 
%token AND 
%token NOT 
%token identifier 

%left BICOND 
%left BACKWARD_IMPLIC 
%left FORWARD_IMPLIC 
%left OR 
%left AND 
%left NOT 

%start Input 
%% 
Input: 
/* Empty */ 
| Input Line 
; 
Line: 
END 
| Sentence END 
; 
Sentence: 
AtomicSentence 
| ComplexSentence 
; 
AtomicSentence: 
identifier {$$=MakeAtomicSentence($1);} 
; 
ComplexSentence: 
LEFT_PAREN Sentence RIGHT_PAREN 
| NOT Sentence {$$=MakeNotSentence($1);} 
| Sentence AND Sentence {$$=MakeAndSentence($1, $2);} 
| Sentence OR Sentence {$$=MakeOrSentence($1, $2);} 
| Sentence FORWARD_IMPLIC Sentence {$$=MakeForwardIMPLIC($1, $2);} 
| Sentence BACKWARD_IMPLIC Sentence {$$=MakeBackwardIMPLIC($1, $2);} 
| Sentence BICOND Sentence {$$=MakeBICOND($1, $2);} 
; 
%% 
int yyerror(char *s) { 
    printf("%s\n",s); 
} 
int main(void) { 
    yyparse() 
} 
+0

這在我的機器上正常工作。你在哪個平臺上使用野牛,以及哪個版本的野牛? – Gian

+0

@Gian謝謝你的回覆;我在Windows Vista上運行bison 2.4.1。你能把我生成的代碼發給我嗎? – saadtaame

回答

1

生成的代碼我的平臺上是不可能爲你工作。但是,我發現this link其中描述了其他人在Vista上使用野牛和m4時遇到的類似問題。也許建議的修復方法也適用於你?它似乎涉及將m4二進制文件複製到本地目錄。

編輯:只是萬一你沒有得到它的工作,我已經上傳了兩個生成的文件爲你:prop.tab.ccprop.tab.hh。不知道他們是否會工作,但也許會有所幫助。

+0

我會試試,謝謝 – saadtaame

+0

順便說一下,我的規格是否正確? – saadtaame

+0

我想是的。這取決於你想要達到的目標。例如,您是否想要不同級別的優先級? – Gian