2011-01-21 15 views
3

私はコンパイラでの背景が全くなく、 "自分自身を教える"旅に着手しました。私はthisチュートリアルを使用してのlexについて学習し、今私はLEXはちょうどそれが上記first.lファイルを使用して取得するすべてのものをエコーし​​ますトークナイザを生成することになっていることを理解しfirst.llexの出力はどうすればいいですか?

%% 
    /* match everything except newline */ 
. ECHO; 
    /* match newline */ 
\n ECHO; 

%% 

int yywrap(void) { 
    return 1; 
} 

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

と呼ばれるファイルに次のようなものを入力しています。私は先に行って、それはlex.yy.cというファイルを作成し

lex first.l

を走りました。このチュートリアルではさらにいくつかの例を示し、yaccにジャンプします。誰かがlexによって生成されたlex.yy.cファイルで何ができるのか教えていただけますか?私はトークナイザを持っていると思っていましたが、このファイルをバイナリにコンパイルするにはどうしたらいいですか? gccを使用していますか?

答えて

4

はい、GCCを使用します。あなたは、おそらくこのような何かをしたい:

gcc -c file1.c 
gcc -c file2.c 
gcc -o result file1.o file2.o 

GCCへ-cフラグは、オブジェクトファイルを生成した後にリンクしますが、停止しないことを伝えます。すべてのファイルをコンパイルしたら、すべてをgccに渡してリンクすることができます。

だからあなたの場合には、あなただけ先に行くとバイナリを取得するためにlexによって生成された出力ファイルをコンパイルします:

gcc -o output lex.yy.c 
+0

感謝。私はgccを使ってコンパイルする方法を知っていますが、lexが生成したファイルをどうするかを知りたがっています。私はgccでコンパイルしなければならなかったことが分かり、期待どおりに動作します。御時間ありがとうございます。あなたの答えを編集して最終ステップを追加しました。あなたが気にしないことを願っています。 – Legend

関連する問題