2012-01-10 19 views
0

私は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

おかげ

答えて

0

は、代わりにそれのあなたのエラーについて、lex仕様を確認する必要があります。

UPDATE:そのような間違いの源を探すために

可能性のある場所はlex仕様のユーザーコードセクションです。コメントで気づいたように、LEXは仕様から生成するコードをチェックしていません。

+0

私はlex自動生成ファイルに触れる必要はないことを理解していますが、何が問題なのか分かりません。だから私はlex.yy.cを開いて私のコードや自動生成されたコードが何であるかを調べました。 – user893269

+1

これは何でもかまいませんので、lexの仕様を参照することは素晴らしいことでしょう。レックス仕様のユーザコードセクションにセミコロンがありません。 –

+0

問題が解決しました。私はCコードの宣言の一つでlexファイルのセミコロンを忘れていました。私の間違いは、flexコンパイルがCコードとlexコードを一緒にチェックしていると考えることでした。 – user893269

関連する問題