C語(yǔ)言詞法分析器設(shè)計(jì)與實(shí)現(xiàn)_第1頁(yè)
C語(yǔ)言詞法分析器設(shè)計(jì)與實(shí)現(xiàn)_第2頁(yè)
C語(yǔ)言詞法分析器設(shè)計(jì)與實(shí)現(xiàn)_第3頁(yè)
C語(yǔ)言詞法分析器設(shè)計(jì)與實(shí)現(xiàn)_第4頁(yè)
C語(yǔ)言詞法分析器設(shè)計(jì)與實(shí)現(xiàn)_第5頁(yè)
已閱讀5頁(yè),還剩9頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、C語(yǔ)言詞法分析器設(shè)計(jì)與實(shí)現(xiàn) C語(yǔ)言詞法分析器的設(shè)計(jì)與實(shí)現(xiàn)一實(shí)驗(yàn)?zāi)康?1強(qiáng)化對(duì)系統(tǒng)軟件綜合工程實(shí)現(xiàn)能力、規(guī)劃能力的訓(xùn)練; 2加強(qiáng)對(duì)詞法分析原理、方法和基本實(shí)現(xiàn)技術(shù)的理解;二實(shí)驗(yàn)內(nèi)容 用C語(yǔ)言(或 C+ )作為宿主語(yǔ)言完成:其中具體要求:1.使用DFA實(shí)現(xiàn)詞法分析器的設(shè)計(jì);2.實(shí)現(xiàn)對(duì)C源程序中注釋的過(guò)濾;3.利用兩對(duì)半緩沖區(qū)從文件中逐一讀取單詞;4.詞法分析結(jié)果屬性字流存放在獨(dú)立文件中;5.統(tǒng)計(jì)源程序每行單詞的個(gè)數(shù)和整個(gè)源文件單詞個(gè)數(shù);6.具有報(bào)告詞法錯(cuò)誤和出錯(cuò)位置(源程序行號(hào)和該行字符)的功能;7.屏幕輸出屬性字流,每次顯示10行,按ESC可中途退出,每行有統(tǒng)計(jì)信息,最后有詞法分析的全部信息,包

2、括各種屬性單詞的個(gè)數(shù)。三實(shí)驗(yàn)驗(yàn)收與評(píng)分要求 1.編寫(xiě)C語(yǔ)言詞法分析器的源程序并調(diào)試通過(guò); 2.通過(guò)測(cè)試程序的驗(yàn)收 (測(cè)試程序名稱(chēng):Test-Lexcial); 3.提交簡(jiǎn)明扼要的書(shū)面實(shí)驗(yàn)報(bào)告。內(nèi)容包括:FA設(shè)計(jì);源程序主要函數(shù)功能;主要數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)。四. 驗(yàn)收測(cè)試用例 1. 測(cè)試用例一:統(tǒng)一驗(yàn)收測(cè)試用例;#include#includechar buf100,str15;int countdef=0;FILE *fpmiddle;struct define char with30; char des30; char filename15;def30;char* getFileName() in

3、t i=0,k=0; for(i=0;bufi!=&i&i=0) add(getFileName();else if(isin(#define)=0)processDefine(str);else fseek(fpt,comment(fpt),1);replace(str);writeline(); void add(char *filename) void replace(char*); FILE *fpp; if(fpp=fopen(filename,r)=NULL) printf(file %s not found or open error!,filename);exit(0); fs

4、eek(fpp,-readline(fpp),1); if(isin(#include)0&isin(#define)0) while(readline(fpp) fseek(fpp,comment(fpp),1);replace(filename);writeline(); elseincludeAndDefine(fpp); fclose(fpp);void replace(char *filename) int i=0,start=0; for(i=0;i=countdef|(start=isin(defi.des)=-1)return; else int lenOfWith=strle

5、n(defi.with);int lenOfDes=strlen(defi.des);if(lenOfDes=lenOfWith) int k,j; for(k=start; kstart+lenOfWith; k+)bufk=defi.withk-start; for(j=(start+lenOfWith); jstart;k-)bufk=bufk-offset; for(j=start;jJava語(yǔ)言語(yǔ)法語(yǔ)義分析器設(shè)計(jì)與實(shí)現(xiàn) Java語(yǔ)言子集語(yǔ)法、語(yǔ)義分析器一實(shí)驗(yàn)?zāi)康?1強(qiáng)化對(duì)系統(tǒng)軟件綜合工程實(shí)現(xiàn)能力、規(guī)劃能力的訓(xùn)練; 2增強(qiáng)對(duì)語(yǔ)法分析器、語(yǔ)義分析及代碼生成器基本實(shí)現(xiàn)技術(shù)的理解;二實(shí)驗(yàn)內(nèi)容

6、 用C語(yǔ)言(或 C+ )作為宿主語(yǔ)言完成:三實(shí)驗(yàn)要求與試驗(yàn)驗(yàn)收 1. 完成對(duì)附錄一中文法描述的Java源代碼的語(yǔ)法分析、語(yǔ)義分析及代碼生成。代碼生成的目標(biāo)代碼為MASM匯編代碼; 2. 詞法分析使用實(shí)驗(yàn)一完成的詞法分析器(即與詞法分析器有直接接口); 3. 課程考試前通過(guò)網(wǎng)絡(luò)教室提交(包括源碼和可執(zhí)行文件的壓縮文件),壓縮文件命名:“學(xué)號(hào)-姓名-語(yǔ)法語(yǔ)義” 4. 通過(guò)測(cè)試用例的驗(yàn)收;附錄一 Java語(yǔ)言子集文法- while(Er)S;- Vc Vc - 標(biāo)識(shí)符= Ex; / 標(biāo)識(shí)符使用詞法分析識(shí)別結(jié)果- 標(biāo)識(shí)符 | 整常數(shù) / 標(biāo)識(shí)符、整場(chǎng)數(shù)使用詞法分析識(shí)別結(jié)果- Vc P Ex | Vc

7、- +| -|*|/ / 運(yùn)算符必須符合優(yōu)先級(jí)和結(jié)合性Java語(yǔ)言詞法分析器設(shè)計(jì)與實(shí)現(xiàn) Java語(yǔ)言詞法分析器的設(shè)計(jì)與實(shí)現(xiàn)一實(shí)驗(yàn)?zāi)康?強(qiáng)化對(duì)系統(tǒng)軟件綜合工程實(shí)現(xiàn)能力、規(guī)劃能力的訓(xùn)練;2加強(qiáng)對(duì)詞法分析原理、方法和基本實(shí)現(xiàn)技術(shù)的理解;二實(shí)驗(yàn)內(nèi)容用C語(yǔ)言(或 C+ )作為宿主語(yǔ)言完成: 其中具體要求: 1.使用DFA實(shí)現(xiàn)詞法分析器的設(shè)計(jì); 2.實(shí)現(xiàn)對(duì)Java源程序中注釋的過(guò)濾; 3.利用兩對(duì)半緩沖區(qū)從文件中逐一讀取單詞; 4.詞法分析結(jié)果屬性字流存放在獨(dú)立文件(文件名:scanner_output)中; 5.統(tǒng)計(jì)源程序每行單詞的個(gè)數(shù)和整個(gè)源文件單詞個(gè)數(shù); 6.具有報(bào)告詞法錯(cuò)誤和出錯(cuò)位置(源程序行號(hào)和

8、該行字符)的功 注: 附Java語(yǔ)言詞法規(guī)則 (附件一);附Java語(yǔ)言詞法分析器的屬性字設(shè)計(jì) (附件二)三實(shí)驗(yàn)驗(yàn)收與評(píng)分要求 1.編寫(xiě)Java語(yǔ)言詞法分析器的源程序并調(diào)試通過(guò); 2.通過(guò)測(cè)試程序的驗(yàn)收 (測(cè)試程序名稱(chēng):Test-Lexcial); 3.提交簡(jiǎn)明扼要的書(shū)面實(shí)驗(yàn)報(bào)告。內(nèi)容包括:FA設(shè)計(jì);源程序主要函數(shù)功能;主要數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)。附件一JAVA語(yǔ)言詞法規(guī)則關(guān)鍵字:abstract boolean break byte case catch char classconst continue default do double else extends falsefinal finally

9、 float for goto if implements importinstanceof int interface long native new null packageprivate protected public return short static super switchsynchronized this throw throws transient true try voidvolatile while標(biāo)識(shí)符:字母或美元符號(hào)“$”或下劃線開(kāi)頭,連接字母或美元符號(hào)“$”或下劃線或數(shù)字字符的串。常量:整 型 常 量: 123, 0, -456, 0123 , 0x123, -

10、0X12,123L 實(shí) 型常 量: 1.23, 0.123, .123, 123., 123.0, 123e3, 123E3, 12.3F布 爾 常 量: true、 false字 符 串 常 量:This is a constant string.。字 符 常 量: a ,轉(zhuǎn)義字符描述 ddd 1到3位8進(jìn)制數(shù)據(jù)所表示的字符(ddd) uxxxx 1到4位16進(jìn)制數(shù)所表示的字符(xxxx) 單引號(hào)字符 反斜杠字符 r 回車(chē) n 換行 f 走紙換頁(yè) t 橫向跳格 b 退格 界限符: 花括號(hào)用于定義類(lèi)、方法和本地范圍的代碼塊。它們也用于包含自動(dòng)被初始化數(shù)組的值。 方括號(hào)用于聲明數(shù)組類(lèi)型。同時(shí)也用

11、于廢棄數(shù)組值。,逗號(hào)用于分隔變量聲明中連續(xù)的標(biāo)識(shí)符。它也用于連接語(yǔ)句。( )圓括號(hào)用于在方法定義和調(diào)用中包含參數(shù)列表。它們也用于定義表達(dá)式中的優(yōu)先級(jí),在控制語(yǔ)句中包含表達(dá)式,以及包含轉(zhuǎn)換類(lèi)型。.點(diǎn)號(hào)用于分隔包名和類(lèi)名。同時(shí)也用于把變量或者方法與引用變量分隔開(kāi)。;分號(hào)用于終止Java語(yǔ)句。 運(yùn)算符:操作運(yùn)算符操作運(yùn)算符操作運(yùn)算符加賦值+=大于乘積賦值*=加+大于等于=非!與賦值&=自增1+非賦值=賦值=左移位不等于!=按位與&左移位賦值=或賦值|=按位取反小于按位或|小于等于=按位異或邏輯與&短路與&條件運(yùn)算符?:邏輯或|短路或|自減1-邏輯異或減賦值-=除賦值/=求模%減-除/模賦值%=零填充右移位等于=乘積*零填充右移位賦值=附件二JAVA詞法分析器的屬性字設(shè)計(jì)單詞屬性用十六進(jìn)制表示:錯(cuò)誤的單詞 0x100注釋0x101空格0x102關(guān)鍵字0x103標(biāo)識(shí)符0x104布爾型0x105字

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論