[心得] Lex&Yacc與Visual C++的整合
前言
Lex&Yacc是在UNIX-LIKE的系統下很常見的工具,不過可能很多人都不知道
Lex&Yacc的用處,希望可以藉由我的這篇文章,讓大部分的人可以在WIN32下使用
Lex&Yacc這個美好的工具XD。
有學過系統程式的人應該會知道COMPILER-COMPILER,意思是可以做COMPILER
的COMPILER,他最大的功用就是可以幫助你切TOKEN(lexical analyse)還有做
GRAMMAR的分析(syntax analyse),TOKEN的定義可以用REGULAR EXPRESSION(正規
表示式)來描述,如果還不清楚我說什麼的人,可以參考O`REILLY的Lex&Yacc(中
譯本)。
目前C/C++編譯器種類甚多,不過我還是選用我最熟悉的Visual C++ 6。
==========================================================================
安裝與設定Parser Generator
事實上,Lex&Yacc的實作有很多,我選用的是Bumble-Bee Software的版本:
http://www.bumblebeesoftware.com/ Bumble-Bee Software的網頁
http://www.bumblebeesoftware.com/pargen.zip 程式下載
如果不是商業用途的話,它應該是FREE的。
下載之後,解壓縮,然後安裝。打開Parser Generator這個IDE,點Project選單,在
下拉選單中選LibBuilder,彈出LibBuilder對話框選擇屬性按鈕
彈出compiler properties 對話框,
Name 選擇Visual C++ (32-bit)
Directory :msvc32
options:
依次為
vc++版本(Versoin 6)。
是否支持unicode碼。
是否把w_char_t作為內建類型。
下邊是VC的各種目錄:
依次為
Compiler Bin Directory:
(C:\PROGRAM FILES\MICROSOFT VISUAL STUDIO\VC98\BIN)
Compiler Bin Directory(2):
(C:\PROGRAM FILES\MICROSOFT VISUAL STUDIO\COMMON\MSDEV98\BIN)
Compiler Include Directory:
(C:\PROGRAM FILES\MICROSOFT VISUAL STUDIO\VC98\INCLUDE)
Compiler Include Directory(2):
(C:\PROGRAM FILES\MICROSOFT VISUAL STUDIO\VC98\MFC\INCLUDE)
Compiler Library Directory:
(C:\PROGRAM FILES\MICROSOFT VISUAL STUDIO\VC98\LIB)
Compiler Library Directory(2):
(C:\PROGRAM FILES\MICROSOFT VISUAL STUDIO\VC98\MFC\LIB)
注意:括號裡面的是我自己編譯器安裝目錄,也許你的和我的不一樣,需要做適當的
調整。
所有的這些設定完成之後點ok。返回LibBuilder,點Build就可以編譯vc++使用的lex
與yacc的函式庫,花一點時間等待它編譯完成。
==========================================================================
設定Visual C++
現在開啟VC++,然後依序點選Tools -> Options,然後點選Directories那一頁
,在各種檔案的目錄下加入以下的路徑:
Executable files:
C:\PROGRAM FILES\PARSER GENERATOR 2\BIN
Include files:
C:\PROGRAM FILES\PARSER GENERATOR 2\CPP\INCLUDE
Library files:
C:\PROGRAM FILES\PARSER GENERATOR 2\CPP\LIB\MSVC32
Source files:
C:\PROGRAM FILES\PARSER GENERATOR 2\CPP\SOURCE
接下來的部分我偷一下懶^^a,我只會提及比較重要的部份
詳細的Project Settings請去看Parser Generator的help
<Setup Visual C++ Version 4.0 and Above>
開啟一個新的Project之後
在Project Settings的DEBUG設定必須在
C/C++ tab -> Preprocessor Definitions box 原本內容的後面加入 ",YYDEBUG"
Link tab -> Object/Library Modules box 原本內容的後面加入 " yld.lib"
如果是要用release版本的話,必須修改一點上面的設定(選不同的LIBRARY)。
如果想在vc中直接編輯而且編譯LEX&YACC的SOURCE CODE的話,可以看
<Compile YACC and Lex Source Files with Visual C++ Version 5.0 and Above>
這篇help
==========================================================================
開始使用Parser Generator
在Parser Generator的IDE中,選Project -> ParseWizard,然後language選"C"
其他的設定就按下一步。
將產生的.l和.y檔經由PG編譯後,會產生兩個.CPP和兩個.H的檔
把她們加入VC的新Project中(別忘了要對project做上述設定)。
然後編譯看看,如果成功的話應該就OK了,接下來就可以參考O`REILLY的書在WIN32
下寫lex和yacc的程式了
==========================================================================
後記
首先先和看完這篇文章的人說抱歉,因為寫的很偷懶,原因是快考試了,可是又
想把自己的心得PO出來,所以看完了還覺得不清楚的人可以寫信問我,或是寫的有錯
還是有lex和yacc語法的問題,也可以問我,有時間的話我一定會解答的。^^
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 211.74.101.216
推
02/01 20:07, , 1F
02/01 20:07, 1F
推
02/01 21:10, , 2F
02/01 21:10, 2F
推
02/01 22:57, , 3F
02/01 22:57, 3F
※ 編輯: swatches 來自: 211.74.101.216 (02/01 23:17)
推
02/02 08:48, , 4F
02/02 08:48, 4F
→
02/02 11:26, , 5F
02/02 11:26, 5F
※ 編輯: swatches 來自: 59.105.105.94 (02/02 12:54)
※ crazying:轉錄至看板 NTUGIEE_EDA 02/06 22:32
推
04/16 21:49, , 6F
04/16 21:49, 6F
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章