1. ホーム
  2. c

[解決済み] フレックスファイルでの早期eofエラー

2022-02-09 07:43:16

質問内容

以下のコードを実行すると、エラーになります" "hello.l",line 31: premature EOF" 以下のコマンドを実行すると、エラーになります" "hello.l",line 31: premature EOF" 以下のコマンドを実行すると、エラーになります。 フレックス hello.l

%{

  #include <stdlib.h>
  #include "y.tab.h"

  %}

%%

("hi"|"oi")"\n"      {return HI; }
("tchau"|"bye")"\n"  {return BYE;}
.                    {yyerror(); }

%%

int main(void)
{
    yyparse();
    return 0;
}

int yywrap(void)
{
    return 0;
}

int yyerror(void)
{
    printf("Error\n");
    exit(1);
}

解決方法は?

問題はあなたの %} - フレックスは 非常に スペースに敏感です。その前のスペースを削除すれば、すべてうまくいくはずです。

また、yywrap関数が不要な場合は、"Yywrap "の文字列の上に %option noyywrap をフレックスファイルに記述してください。