2017-02-09 5 views
-1

次のようなlexプログラムがあります。私はアクションLEXプログラム内でEOFが発生しました

%{ 
#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);} 

は、誰かが私を助けることができるアクションLEXプログラムの内部で発生したエラー

EOFに遭遇しますか?

+0

このファイルに間違いはありません。このエラーは通常、 '}'が見つからないことを意味しますが、この場合、私の質問からのデータを私のマシンにコピーし、苦情なしにコンパイルしました。あなたのファイルとまったく同じですか? – rici

答えて

2

このエラーは、テキストの末尾にEOFを付けると、最後の行が行末で終了せずにシステムに依存する可能性があり、他のシステムでは再現しにくい場合がよくあります。

最後の行の後に空白行があり、エラーがなくなる可能性があることを確認してください。

関連する問題