私はbison、flex、およびC++ファイルを作成しました。 バイソンとフレックスのコンパイルがパスされました。しかし、私はcとcppファイルをコンパイルしようとしています:
g ++ * .cpp * .c、私は奇妙なエラーを受け取ります: lex.yy.c:479:エラー:予期した `; ' "static"の前に とlex.yy.cファイルを開いたときに、flexによって自動的に作成されたコードが表示されます。これは、ライン479は太字であり、線479の周りにコードの一部である:コンパイル時のエラーlex.yy.c with g ++
using namespace std;
using namespace output
#line 465 "lex.yy.c"
/* Macros after this point can all be overridden by user definitions in
* section 1.
*/
#ifndef YY_SKIP_YYWRAP
#ifdef __cplusplus
extern "C" int yywrap YY_PROTO((void));
#else
extern int yywrap YY_PROTO((void));
#endif
#endif
#ifndef YY_NO_UNPUT
静的ボイドyyunputのYY_PROTO((int型C、チャー*のbuf_ptr))。
#ifndef yytext_ptr
static void yy_flex_strncpy YY_PROTO((char *, yyconst char *, int));
#endif
#endifの 私は何をすべきかどんな考えを持っていません。私を助けてください。あなたはLEXで生成されたファイル内のエラーを修正しようとshould`t
おかげ
私はlex自動生成ファイルに触れる必要はないことを理解していますが、何が問題なのか分かりません。だから私はlex.yy.cを開いて私のコードや自動生成されたコードが何であるかを調べました。 – user893269
これは何でもかまいませんので、lexの仕様を参照することは素晴らしいことでしょう。レックス仕様のユーザコードセクションにセミコロンがありません。 –
問題が解決しました。私はCコードの宣言の一つでlexファイルのセミコロンを忘れていました。私の間違いは、flexコンパイルがCコードとlexコードを一緒にチェックしていると考えることでした。 – user893269