Upload
cale
View
119
Download
9
Tags:
Embed Size (px)
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
Citation preview
CompilersFlex & Bison 的安裝使用
Chang Chi-Chung2011.03.31
安裝流程圖安裝 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 合作。
Step 1: 安裝 C/C++ 編譯器本步驟可以選擇安裝 MinGW 或 wxDevC++ 。
※ wxDevC++ 下載網址:http://wxdsgn.sourceforge.net/
想要裝 MinGW 的同學請參閱 Step 1-1 的投影片
Step 1: 安裝 C/C++ 編譯器1. 請依照安裝指示安裝,安裝路徑可以不用修改。預設路徑為 C:\Program Files\Dev-Cpp2. 下面這個步驟,若選擇「是」,會從網路下載最新的套件,安裝時間較久,建議按「否」。
Step 1: 安裝 C/C++ 編譯器安裝後第一次啟動設定,請依照下圖的選項設定,其餘設定用預設值即可。
設定環境變數• 請在「我的電腦」的圖示上,按右鍵選取「內容」
在變數值後面加入 C:\Program Files\Dev-CPP\bin; 這裡的路徑應該跟安裝時路徑一致。
Step 1-1: 安裝 MinGW若已經安裝了 wxDevC++ ,就不需要安裝 MinGW
※ MinGW 下載網址: http://www.mingw.org/
Step 1-1: 安裝 MinGW
直接執行,就可以完成安裝 MinGW 。1. 依然要設定環境變數,就是安裝目錄中的 bin 資料夾。2. 採取此方案的同學,之後只能透過命令列模式編譯程式。
Step 2: 下載 Flex• 網址:– http://gnuwin32.sourceforge.net/packages/flex.htm
Step 2: 安裝 Flex安裝選項,選取預設值即可。安裝路徑不須更改。
Step 3: 下載 Bison• 網址:– http://gnuwin32.sourceforge.net/packages/bison.htm
Step 3: 安裝 Bison安裝選項,選取預設值即可。安裝路徑不須更改(應該跟 Flex 一樣)。
Step 4: 設定環境變數
在變數值後面加入 C:\Program Files\GnuWin32\bin; 這裡的路徑應該跟安裝時路徑一致。
請在「我的電腦」的圖示上,按右鍵選取「內容」
Step 4: 複製連結程式庫• 選取 C:\Program Files\GnuWin32\lib 所有檔案 (3
個 ) ,複製到 C:\Program Files\Dev-CPP\lib
測試安裝結果• 執行「命令提示字元」• 請分別下達
gcc –v ( 注意 V 小寫 )flex –V ( 注意 V 大寫 )bison –V ( 注意 V 大寫 )
• 右圖為正確執行結果,表示安裝無誤。
使用 Flex(1)• 請先下載範例檔案,解壓縮後有二個資料夾,(建議放置於根目錄下較方便)
Flex• Example1• Example2
• 請啟動「命令提示字元」,利用命令CD C:\Flex\Example1 ( 紅字部分請依據實際放置位置修改 )
• 下達命令flex example1.flex ( 執行後,會產生一個檔案 lex.yy.c )
使用 Flex(2)1. 執行 wxDevC++2. 「檔案」「開新檔案」「專案」3. 新專案設定值,請見圖。
使用 Flex(3)
1. 專案所在資料夾,請設定到 C:\Flex\Example1 ( 範例檔所在位置 ) ,比較方便
2. 專案出現後,請點選 main.c ,按右鍵,選擇移除檔案。
使用 Flex(4)
1. 點選專案 Ex1 ,按右鍵,選擇「將檔案加入專案」2. 將 Flex 產生的 lex.yy.c 加入
使用 Flex(5)
為能夠讓程式編譯後,連結器能夠連結函式庫,須設定Flex 函式庫所在位置,方法如下:1. 點選「專案」「專案選項」2. 點選「額外命令列選項」「新增函式庫或 Obj 檔」 選擇 C:\Program Files\Dev-Cpp\lib\libfl.a
使用 Flex(6)
1. 請點選「執行」 「編譯」,執行檔會產生在專案資料夾下的 .\Output\MingW ,檔名為專案名稱 Ex1.exe
2. 請將 example1 資料夾下的測試檔 TestData.txt 複製到執行檔的資料夾下。3. 執行「命令提示字元」,切換到執行檔所在資料夾,下達命令Ex1 < TestData.txt
命令列提示字元,一氣呵成• 喜歡全手動,懶得啟動 wxDevC++ IDE 整合發展環境的同學,可以參考下面的全手動方式(哈哈,高手高手)。• 執行命令列提示字元,切換到 Example1 的資料夾。• 在命令提示字元下達命令
flex example1.flexgcc lex.yy.c –o Ex1.exe –lfl ( 紅字均為英文字母 L 的小
寫 )Ex1.exe < TestData.txt
Example1 的程式說明• 在 Example1 中,我們寫了一個簡單的
Flex 程式,這個程式可以將輸入的資料檔,其中的數字過濾並顯示出來,其他的字元則一律捨棄。• 請仔細觀察兩個檔案– Example1.flex– TestData.txt
• 請自己隨意產生另一個測試檔,再次執行 ex1 < TestData2.txt (TestData2.txt 是你自己產生的檔案 )
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
執行結果
請仔細觀察好好研究
練習• Example2 的部份,請自行依據投影片練習。• 下次上課,我會問的問題
Example2 的 flex 程式的作用為何?變數 nl, wd, ch 分別代表什麼意義?
提示: \t 代表 Tab 字元。