2017-02-09 61 views
-1

我有一個lex程序如下。我遇到一個動作lex程序EOF遇到內部動作LEX程序

%{ 
#include<stdio.h> 
#include<math.h> 
#include "y.tab.h" 
%} 
%% 
[ \t]+ ; 
[0-9]+ {yylval = atoi(yytext); 
return INTEGER;} 
[-+*/] {return *yytext;} 
"(" {return *yytext;} 
")" {return *yytext;} 
\n {return *yytext;} 
. {char msg[25]; 
sprintf(msg,"%s <%s>","invalid character",yytext); 
yyerror(msg);} 

有人能幫我裏面遇到的錯誤

EOF?

+0

我看不出那個文件有什麼問題。這個錯誤通常意味着你缺少一個'}',但在這種情況下,我將你問題中的數據複製到我的機器上,並且毫無怨言地對它進行編譯。它與你的文件完全一樣嗎? – rici

回答

2

如果在文本末尾有一個EOF而不終止帶行尾的最後一行,但它也可能取決於系統,這樣就很容易在其他系統上重現此錯誤。

確保最後一行後面有空行,錯誤可能會消失。