[心得] Lex&Yacc與Visual C++的整合

看板C_and_CPP (C/C++)作者 (菇)時間19年前 (2006/02/01 18:55), 編輯推噓5(501)
留言6則, 6人參與, 最新討論串1/1
前言   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
有人可以試一下VC7.NET的嗎?...考完試想玩一下.NET的VC
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
push
04/16 21:49, 6F
文章代碼(AID): #13u9E_XO (C_and_CPP)
文章代碼(AID): #13u9E_XO (C_and_CPP)