2011-01-21 69 views
3

我絕對沒有編譯器背景,並開始了「教我自己」的旅程。我正在學習如何使用this教程lex和輸入這樣的事情到一個文件名爲first.l如何處理lex的輸出?

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

%% 

int yywrap(void) { 
    return 1; 
} 

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

現在我明白了法應該產生一個標記,這將只是回聲的一切它得到使用上述first.l文件。我繼續跑

lex first.l

它創建了一個名爲lex.yy.c文件。該教程然後給出了幾個例子,並跳轉到yacc。有人能告訴我什麼可以做的lex.yy.c由lex生成的文件?我的想法是,我現在有一個標記器,但我現在如何將此文件編譯爲二進制文件?使用gcc?

回答

4

是的,使用GCC。你可能想要做這樣的事情:

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

-c標誌GCC告訴它不鏈接,但產生一個目標文件後停止。編譯完所有文件後,您可以將它們全部傳送到gcc

所以你的情況,你會先走一步,編譯通過lex生成的輸出文件,以獲得二進制:

gcc -o output lex.yy.c 
+0

感謝。我知道如何使用gcc編譯,但想知道如何處理lex生成的文件。原來,我只是不得不用gcc編譯它,它按預期工作。謝謝你的時間。我編輯了你的答案以添加最後一步。希望你不會介意。 – Legend