1 / 25

Compilers Flex & Bison 的安裝使用

Compilers Flex & Bison 的安裝使用. Chang Chi-Chung 2011.03.31. MinGW 為 Minimalist GNU for Windows 的簡稱,是 GCC for Windows 的版本,提供有 C 、 C++ 、 ADA 、 Fortran 等語言。 wxDevC++ 是以 MinGW 為編譯基礎的 IDE 整合發展環境。 可以依照需求,決定安裝 MinGW 或 wxDevC++ 。喜歡透過命令列編譯的,可以裝 MinGW ,想要用整合發展環境的可以裝 wxDevC++ 。. 安裝流程圖.

cale
Download Presentation

Compilers Flex & Bison 的安裝使用

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. CompilersFlex & Bison 的安裝使用 Chang Chi-Chung 2011.03.31

  2. MinGW 為 Minimalist GNU for Windows 的簡稱,是 GCC for Windows 的版本,提供有 C、C++、ADA、Fortran 等語言。 wxDevC++ 是以 MinGW 為編譯基礎的 IDE 整合發展環境。 可以依照需求,決定安裝MinGW 或 wxDevC++。喜歡透過命令列編譯的,可以裝 MinGW,想要用整合發展環境的可以裝 wxDevC++。 安裝流程圖 安裝 MinGW 或 wxDev-CPP 安裝 Flex Flex 是語彙分析器的產生器,只要依照 Flex 的規定,撰寫 Token 的 Pattern (以RE表示),透過 Flex 就可以產生語彙分析器的程式碼(C或 C++) 安裝 Bison Bison 是語法分析器的產生器,是Yacc的改進版本,只要依照 Bison 的規定,撰寫語法規則 ,透過 Bison 就可以產生語法分析器的程式碼(C或 C++),Bison可以和 Flex 合作。 執行範例檔案 (2個)

  3. Step 1: 安裝 C/C++ 編譯器 本步驟可以選擇安裝 MinGW 或 wxDevC++。 ※ wxDevC++ 下載網址: http://wxdsgn.sourceforge.net/ 想要裝 MinGW 的同學請參閱 Step 1-1的投影片

  4. Step 1: 安裝 C/C++ 編譯器 1.請依照安裝指示安裝,安裝路徑可以不用修改。預設路徑為 C:\Program Files\Dev-Cpp 2.下面這個步驟,若選擇「是」,會從網路下載最新的套件,安裝時間較久,建議按「否」。

  5. Step 1: 安裝 C/C++ 編譯器 安裝後第一次啟動設定,請依照下圖的選項設定,其餘設定用預設值即可。

  6. 設定環境變數 • 請在「我的電腦」的圖示上,按右鍵選取「內容」 在變數值後面加入 C:\Program Files\Dev-CPP\bin; 這裡的路徑應該跟安裝時路徑一致。

  7. Step 1-1: 安裝 MinGW 若已經安裝了wxDevC++,就不需要安裝 MinGW ※ MinGW 下載網址: http://www.mingw.org/

  8. Step 1-1: 安裝 MinGW 直接執行,就可以完成安裝 MinGW。 1.依然要設定環境變數,就是安裝目錄中的 bin資料夾。 2.採取此方案的同學,之後只能透過命令列模式編譯程式。

  9. Step 2: 下載 Flex • 網址: • http://gnuwin32.sourceforge.net/packages/flex.htm

  10. Step 2: 安裝 Flex 安裝選項,選取預設值即可。安裝路徑不須更改。

  11. Step 3: 下載 Bison • 網址: • http://gnuwin32.sourceforge.net/packages/bison.htm

  12. Step 3: 安裝 Bison 安裝選項,選取預設值即可。安裝路徑不須更改(應該跟 Flex一樣)。

  13. Step 4: 設定環境變數 請在「我的電腦」的圖示上,按右鍵選取「內容」 在變數值後面加入 C:\Program Files\GnuWin32\bin; 這裡的路徑應該跟安裝時路徑一致。

  14. Step 4: 複製連結程式庫 • 選取 C:\Program Files\GnuWin32\lib 所有檔案(3個),複製到 C:\Program Files\Dev-CPP\lib

  15. 測試安裝結果 • 執行「命令提示字元」 • 請分別下達 • gcc –v (注意 V 小寫) • flex –V (注意 V 大寫) • bison –V (注意 V 大寫) • 右圖為正確執行結果,表示安裝無誤。

  16. 使用 Flex(1) • 請先下載範例檔案,解壓縮後有二個資料夾,(建議放置於根目錄下較方便) • Flex • Example1 • Example2 • 請啟動「命令提示字元」,利用命令 CD C:\Flex\Example1 (紅字部分請依據實際放置位置修改) • 下達命令 flex example1.flex (執行後,會產生一個檔案 lex.yy.c )

  17. 使用 Flex(2) 1.執行 wxDevC++ 2.「檔案」「開新檔案」「專案」 3.新專案設定值,請見圖。

  18. 使用 Flex(3) 1. 專案所在資料夾,請設定到 C:\Flex\Example1 (範例檔所在位置),比較方便 2.專案出現後,請點選 main.c,按右鍵,選擇移除檔案。

  19. 使用 Flex(4) 1.點選專案 Ex1,按右鍵,選擇「將檔案加入專案」 2.將Flex產生的 lex.yy.c 加入

  20. 使用 Flex(5) 為能夠讓程式編譯後,連結器能夠連結函式庫,須設定Flex 函式庫所在位置,方法如下: 1.點選「專案」「專案選項」 2.點選「額外命令列選項」「新增函式庫或Obj檔」 選擇 C:\Program Files\Dev-Cpp\lib\libfl.a

  21. 使用 Flex(6) 1. 請點選「執行」 「編譯」,執行檔會產生在專案資料夾下的.\Output\MingW,檔名為專案名稱 Ex1.exe 2.請將 example1 資料夾下的測試檔 TestData.txt 複製到執行檔的資料夾下。 3.執行「命令提示字元」,切換到執行檔所在資料夾,下達命令 Ex1 < TestData.txt

  22. 命令列提示字元,一氣呵成 • 喜歡全手動,懶得啟動 wxDevC++ IDE 整合發展環境的同學,可以參考下面的全手動方式(哈哈,高手高手)。 • 執行命令列提示字元,切換到 Example1 的資料夾。 • 在命令提示字元下達命令 • flex example1.flex • gcc lex.yy.c –o Ex1.exe –lfl(紅字均為英文字母 L的小寫) • Ex1.exe < TestData.txt

  23. Example1 的程式說明 • 在 Example1 中,我們寫了一個簡單的 Flex程式,這個程式可以將輸入的資料檔,其中的數字過濾並顯示出來,其他的字元則一律捨棄。 • 請仔細觀察兩個檔案 • Example1.flex • TestData.txt • 請自己隨意產生另一個測試檔,再次執行 ex1 < TestData2.txt (TestData2.txt 是你自己產生的檔案)

  24. Example1.flex & TestData.txt 的內容 Example1.flex %{ #include <stdio.h> %} %% [0-9]+ { printf(“%s\n”, yytext); } .|\n { }%% int main(intargc, char *argv[]) { yylex(); return 0; } 執行結果 123 456 789 99 05 05 TestData.txt 請仔細觀察好好研究 123 456 789 Today is a good day to die. 99.05.05

  25. 練習 • Example2的部份,請自行依據投影片練習。 • 下次上課,我會問的問題 • Example2 的 flex 程式的作用為何? • 變數 nl, wd, ch 分別代表什麼意義? • 提示:\t 代表 Tab 字元。

More Related