?? 算法,步驟和方法.txt
字號:
算法,步驟和方法:
1. 寫一個LEX的源程序pl0.l
說明部分:聲明所涉及c庫函數(shù);
用來存儲二元式組的結(jié)構(gòu)體token;
聲明輸入輸出文件指針fpin,fpout;
聲明程序所需的變量值;
補充c函數(shù)的聲明
定義各正規(guī)式,包括標識符,常量,界符等
轉(zhuǎn)換規(guī)則:識別出關(guān)鍵字,則類型值type=3,并且打印出類型名和值
識別出標識符,則類型值type=1,并打印類型名和值
識別出常量,則類型值type=2,并打印類型名和值
識別出界符,則類型值type=5,并打印類型名和值
識別出運算符,則類型值type=4,并打印類型名和值
識別出換行回車,則行數(shù)linenum自增1
識別出空白符,如空格,制表符,則濾掉,即不存儲到token中,也不打印。
輔助過程:
main()中,要求用戶輸入pl0源程序文件名,調(diào)用void read_source (char filename[])讀取該文件內(nèi)容,調(diào)用LEX提供的yylex()函數(shù)開始按照前面定義的規(guī)則開始詞法分析,最后打開結(jié)果輸出文件,打印分析結(jié)果。
Print()中,計數(shù)器自加,打開要輸出結(jié)果的文件,若類型值為1、2、3、4、5則賦以二元式中類型值相應(yīng)的類型名稱并調(diào)用yytext()函數(shù)返回其字符值給二元式中的單詞自身的值且打印該二元式;否則累計錯誤數(shù)并打印。
2. 安裝flex,并在安裝目錄下,如DProgram FilesGnuWin32bin下運行flex.exe,將寫好的LEX程序粘貼進去,然后關(guān)閉,從而生成目標程序lex.yy.c
3. 用Visual C++ 6.0編譯lex.yy.c程序,并運行。
4. 運行后輸入要測試的pl0源程序文件名Test0.pl0(當該文件和c程序在同一個目錄下)。
5. 程序運行結(jié)束后生成一個文件如result.txt,里面儲存了整個pl0源程序分析后的二元式組。
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -