" />
這是lex yacc for windows下載, yacc和lex在windows已經(jīng)移植成功,其中常用的一個工具就是Parser Generator。這個工具使用yacc和lex能夠生成Visual C++,Borland C++,Other C/C++以及相關Java代碼。下面介紹一下這個工具是如何生成代碼并使用Visual C++編譯的。
Cygwin是Windows平臺上運行的unix/linux模擬環(huán)境,由Cygnus Solutions開發(fā)。
Cygnus起初把gcc,gdb,gas等開發(fā)工具進行了改進,使他們能夠生成并解釋win32的目標
文件。然后再把這些工具移植到windows平臺上去。
移值方案有多種,一是基于win32 api對這些工具的源代碼進行大幅修改。但工作量太大,他
們采取了另一種方法,即開發(fā)一個共享庫(cygwin.dll),把win32 api中沒有的unix風格的調用(如
fork,spawn,signals,select,sockets等)封裝在里面,也就是說,他們基于win32 api寫了一個unix
系統(tǒng)庫的模擬層。這樣,只要把這些工具的源代碼和這個共享庫連接到一起,就可以使用unix主
機上的交叉編譯器來生成可以在windows平臺上運行的工具集。
windows下的yacc 和 flex工具,安裝時注意不要有空格,然后命令行進入bin目錄,就可以用命令行調用這兩個工具了,命令行如下:
flex xx.l
bison -d xx.y
建立數(shù)組,將單詞讀入,對單詞的ASCII碼進行判斷,將在ASCII碼值在一定區(qū)間進行區(qū)分(使用if語句來判斷),分開來后,對其所在ASCII值區(qū)間的不同,給予以不同的屬性(比如:系統(tǒng)保留字…),詞法分析器完成后要能識別+,-,=等字符。
對輸入的程序語句進行分析。對每個非終結點定義單個函數(shù),定義了它的后繼節(jié)點。然后用一個構造來的函數(shù),使定義的后繼節(jié)點符合語法,否則報錯。