abstract
在開發程式的過程中經常會遇到文字解析的問題,例如:解析c語言源程式,編寫 指令碼引擎等等,解決這種文字解析的方法有很多,一種方法就是自己手動用c或者 c++直接編寫解析程式,這對於簡單格式的文字資訊來說,不會是什麼問題,但是 對於稍微複雜一點的文字資訊的解析來說,手工編寫解析器將會是一件漫長痛苦 而容易出錯的事情。本系列文件就是專門用來由淺入深的介紹兩個有名的unix工 具lex和yacc,並會一步一步的詳細解釋如何用這兩個工具來實現我們想要的任何 功能的解析程式,為了方便理解和應用,我會在該系列的文章中盡可能的採用具 體可行的例項來加以闡釋,而且這種例項都是盡可能的和具體的系統平台無關的 ,因此我採用命令列程式作為我們的解析程式的最終結果。
table of contents
必備工具
flex和bison
c/c++編譯器
開發lex和yacc程式最需要的程式就是lex和yacc了,如果你是unix或者linux系統,則 系統自帶了這兩個工具,無需安裝,不過值得說明的是gnu/linux下面的lex是flex, 而yacc則是bison。另外需要的就是乙個c/c++語言編譯器,由於我們採用的是gnu的 lex和yacc,所以,理所當然的我們就使用gnu的編譯器了,如果是unix或者linux系統 ,那麼編譯器應該已經安裝了。在這裡我重點討論的是windows系統環境下的lex和 yacc程式的開發,至於為什麼選擇windows系統作為開發平台,則是為了盡可能的讓初 學者容易入門。
言歸正傳,首先列舉windows平台下面lex和yacc開發環境所需要安裝的程式:
lex(flex.exe)和yacc(bison.exe)環境
c/c++編譯器
解壓縮lexyacc.rar之後執行裡面的lexyacc.bat檔案就會得到乙個lex和yacc環境, 下圖是簡單的執行結果:
--lex和yacc環境
注意安裝了mingw之後一定要將安裝後的mingw的bin路徑設定到環境變數path中。
Lex和Yacc從入門到精通 2 正規表示式篇
正規表示式在unix liunx系統中起著非常重要的作用,在很大一部分的程式中都使用了正規表示式,可以這麼說 在unix linux系統中,如果不懂正規表示式就不算會使用該系統 本文中使用的lex和yacc都是基於正規表示式的應用,因此有必要用一篇文件的形式詳細說明在lex和yacc中使用的正規表示...
Lex和Yacc從入門到精通 2 正規表示式篇
正規表示式在 unix liunx 系統中起著非常重要的作用,在很大一部分的程式中都使用了正規表示式,可以這麼說 在 unix linux 系統中,如果不懂正規表示式就不算會使用該系統 本文中使用的 lex和 yacc 都是基於正規表示式的應用,因此有必要用一篇文件的形式詳細說明在 lex和 yac...
lex和yacc格式入門
lex和yacc格式入門 lex檔案 hi oi n tchau bye n int main void int yywrap void yacc檔案 token hi bye program hi bye hi hi bye bye int yyerror char msg 會發現它們的結構都很相...