compilers flex & bison 的安裝使用

25
Compilers Flex Bison 的的的的的 Chang Chi-Chung 2011.03.31

Upload: cale

Post on 18-Mar-2016

119 views

Category:

Documents


9 download

DESCRIPTION

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++ 。. 安裝流程圖. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Compilers Flex  &  Bison  的安裝使用

CompilersFlex & Bison 的安裝使用

Chang Chi-Chung2011.03.31

Page 2: Compilers Flex  &  Bison  的安裝使用

安裝流程圖安裝 MinGW 或 wxDev-

CPP

安裝 Flex

安裝 Bison

執行範例檔案 (2 個 )

MinGW 為 Minimalist GNU for Windows 的簡稱,是 GCC for Windows 的版本,提供有 C 、 C++ 、 ADA 、 Fortran 等語言。wxDevC++ 是以 MinGW 為編譯基礎的 IDE 整合發展環境。可以依照需求,決定安裝 MinGW 或 wxDevC++ 。喜歡透過命令列編譯的,可以裝 MinGW ,想要用整合發展環境的可以裝 wxDevC++ 。Flex 是語彙分析器的產生器,只要依照 Flex 的規定,撰寫 Token 的 Pattern ( 以 RE 表示),透過 Flex 就可以產生語彙分析器的程式碼 (C 或 C++)

Bison 是語法分析器的產生器,是 Yacc 的改進版本,只要依照 Bison 的規定,撰寫語法規則 ,透過 Bison 就可以產生語法分析器的程式碼 (C 或 C++) , Bison 可以和 Flex 合作。

Page 3: Compilers Flex  &  Bison  的安裝使用

Step 1: 安裝 C/C++ 編譯器本步驟可以選擇安裝 MinGW 或 wxDevC++ 。

※ wxDevC++ 下載網址:http://wxdsgn.sourceforge.net/

想要裝 MinGW 的同學請參閱 Step 1-1 的投影片

Page 4: Compilers Flex  &  Bison  的安裝使用

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

Page 5: Compilers Flex  &  Bison  的安裝使用

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

Page 6: Compilers Flex  &  Bison  的安裝使用

設定環境變數• 請在「我的電腦」的圖示上,按右鍵選取「內容」

在變數值後面加入 C:\Program Files\Dev-CPP\bin; 這裡的路徑應該跟安裝時路徑一致。

Page 7: Compilers Flex  &  Bison  的安裝使用

Step 1-1: 安裝 MinGW若已經安裝了 wxDevC++ ,就不需要安裝 MinGW

※ MinGW 下載網址: http://www.mingw.org/

Page 8: Compilers Flex  &  Bison  的安裝使用

Step 1-1: 安裝 MinGW

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

Page 9: Compilers Flex  &  Bison  的安裝使用

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

Page 10: Compilers Flex  &  Bison  的安裝使用

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

Page 11: Compilers Flex  &  Bison  的安裝使用

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

Page 12: Compilers Flex  &  Bison  的安裝使用

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

Page 13: Compilers Flex  &  Bison  的安裝使用

Step 4: 設定環境變數

在變數值後面加入 C:\Program Files\GnuWin32\bin; 這裡的路徑應該跟安裝時路徑一致。

請在「我的電腦」的圖示上,按右鍵選取「內容」

Page 14: Compilers Flex  &  Bison  的安裝使用

Step 4: 複製連結程式庫• 選取 C:\Program Files\GnuWin32\lib 所有檔案 (3

個 ) ,複製到 C:\Program Files\Dev-CPP\lib

Page 15: Compilers Flex  &  Bison  的安裝使用

測試安裝結果• 執行「命令提示字元」• 請分別下達

gcc –v ( 注意 V 小寫 )flex –V ( 注意 V 大寫 )bison –V ( 注意 V 大寫 )

• 右圖為正確執行結果,表示安裝無誤。

Page 16: Compilers Flex  &  Bison  的安裝使用

使用 Flex(1)• 請先下載範例檔案,解壓縮後有二個資料夾,(建議放置於根目錄下較方便)

Flex• Example1• Example2

• 請啟動「命令提示字元」,利用命令CD C:\Flex\Example1 ( 紅字部分請依據實際放置位置修改 )

• 下達命令flex example1.flex ( 執行後,會產生一個檔案 lex.yy.c )

Page 17: Compilers Flex  &  Bison  的安裝使用

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

Page 18: Compilers Flex  &  Bison  的安裝使用

使用 Flex(3)

1. 專案所在資料夾,請設定到 C:\Flex\Example1 ( 範例檔所在位置 ) ,比較方便

2. 專案出現後,請點選 main.c ,按右鍵,選擇移除檔案。

Page 19: Compilers Flex  &  Bison  的安裝使用

使用 Flex(4)

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

Page 20: Compilers Flex  &  Bison  的安裝使用

使用 Flex(5)

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

Page 21: Compilers Flex  &  Bison  的安裝使用

使用 Flex(6)

1. 請點選「執行」 「編譯」,執行檔會產生在專案資料夾下的 .\Output\MingW ,檔名為專案名稱 Ex1.exe

2. 請將 example1 資料夾下的測試檔 TestData.txt 複製到執行檔的資料夾下。3. 執行「命令提示字元」,切換到執行檔所在資料夾,下達命令Ex1 < TestData.txt

Page 22: Compilers Flex  &  Bison  的安裝使用

命令列提示字元,一氣呵成• 喜歡全手動,懶得啟動 wxDevC++ IDE 整合發展環境的同學,可以參考下面的全手動方式(哈哈,高手高手)。• 執行命令列提示字元,切換到 Example1 的資料夾。• 在命令提示字元下達命令

flex example1.flexgcc lex.yy.c –o Ex1.exe –lfl ( 紅字均為英文字母 L 的小

寫 )Ex1.exe < TestData.txt

Page 23: Compilers Flex  &  Bison  的安裝使用

Example1 的程式說明• 在 Example1 中,我們寫了一個簡單的

Flex 程式,這個程式可以將輸入的資料檔,其中的數字過濾並顯示出來,其他的字元則一律捨棄。• 請仔細觀察兩個檔案– Example1.flex– TestData.txt

• 請自己隨意產生另一個測試檔,再次執行 ex1 < TestData2.txt (TestData2.txt 是你自己產生的檔案 )

Page 24: Compilers Flex  &  Bison  的安裝使用

Example1.flex & TestData.txt 的內容 %{#include <stdio.h>%}%%[0-9]+ { printf(“%s\n”, yytext); }.|\n { }%%int main(int argc, char *argv[]){ yylex(); return 0;}

123 456 789Today is a good day to die. 99.05.05

Example1.flex

TestData.txt

123456789990505

執行結果

請仔細觀察好好研究

Page 25: Compilers Flex  &  Bison  的安裝使用

練習• Example2 的部份,請自行依據投影片練習。• 下次上課,我會問的問題

Example2 的 flex 程式的作用為何?變數 nl, wd, ch 分別代表什麼意義?

提示: \t 代表 Tab 字元。