2016-11-04 111 views
-1

我工作的一個lex和yacc程序,在我的色器件MAC OS ..錯誤而編譯lex和yacc在Mac OS

當我試圖做到以下幾點:

gcc sample.tab.c lex.yy.c -ly -ll 

它顯示了我很多在最後的錯誤和..

致命錯誤:錯誤太多發射,現在停止[-ferror限=]

一些錯誤的APPEA rs:

./sample.tab.h:44:6: error: expected identifier 
    if = 260, 
    ^
./sample.tab.h:46:6: error: expected identifier 
    else = 262, 
    ^
./sample.tab.h:48:6: error: expected identifier 
    while = 264, 
    ^
./sample.tab.h:53:6: error: expected identifier 
    return = 269, 

任何人都可以幫助我嗎?

謝謝。

+0

[MCVE]請。這裏沒有足夠的信息。 – rici

回答

0

你不能用C關鍵字作爲非終端的名字。這就是爲什麼通常使用ALL-CAPS作爲非終端名稱的原因。所以,你撓文件可能包括

while { return WHILE; } 
return { return RETURN; } 

,如果你是野牛,你可以聲明別名:

%token WHILE "while" 
%token RETURN "return" 

讓你寫這樣的規則:

whileStatement: "while" '(' expression ')' statement 
+0

謝謝!!!!它的作品知道 –