實(shí)驗(yàn)一-詞法分析程序的設(shè)計(jì)與實(shí)現(xiàn)_第1頁(yè)
實(shí)驗(yàn)一-詞法分析程序的設(shè)計(jì)與實(shí)現(xiàn)_第2頁(yè)
實(shí)驗(yàn)一-詞法分析程序的設(shè)計(jì)與實(shí)現(xiàn)_第3頁(yè)
實(shí)驗(yàn)一-詞法分析程序的設(shè)計(jì)與實(shí)現(xiàn)_第4頁(yè)
實(shí)驗(yàn)一-詞法分析程序的設(shè)計(jì)與實(shí)現(xiàn)_第5頁(yè)
已閱讀5頁(yè),還剩1頁(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)介

實(shí)驗(yàn)一詞法分析程序的設(shè)計(jì)與實(shí)現(xiàn)一、實(shí)驗(yàn)內(nèi)容【實(shí)驗(yàn)?zāi)康暮鸵蟆吭O(shè)計(jì)、編制、調(diào)試一個(gè)具體的詞法分析程序,加深對(duì)詞法分析原理的理解。【實(shí)驗(yàn)內(nèi)容】通過(guò)對(duì)PL/0詞法分析程序(GETSYM)的分析,并在此基礎(chǔ)上按照附錄A中給出的PL/0語(yǔ)言的語(yǔ)法描述,編寫一個(gè)PL/0語(yǔ)言的詞法分析程序。此程序應(yīng)具有如下功能:輸入為字符串(待進(jìn)行詞法分析的源程序),輸出為單詞串,即由(單詞、類別)所組成的二元組序列。有一定檢查錯(cuò)誤的能力,例如發(fā)現(xiàn)2A這類不能作為單詞的字符串。【實(shí)驗(yàn)環(huán)境】WindowsPC機(jī),任何語(yǔ)言。【提交內(nèi)容】提交實(shí)驗(yàn)報(bào)告,報(bào)告內(nèi)容如下:目的要求、算法描述、程序結(jié)構(gòu)、主要變量名說(shuō)明、程序清單、調(diào)試情況、設(shè)計(jì)技巧、心得體會(huì)。提交源程序和可執(zhí)行文件。【學(xué)時(shí)】4課時(shí)。二、實(shí)驗(yàn)說(shuō)明詞法分析程序的任務(wù)就是掃描源程序,依據(jù)詞法規(guī)則識(shí)別單詞并報(bào)告構(gòu)詞錯(cuò)誤信息。通常將單詞分為5種類型。1)基本字:也叫關(guān)鍵字、保留字,是程序設(shè)計(jì)語(yǔ)言用來(lái)表示特定語(yǔ)法含義的一種標(biāo)識(shí)符,如if、begin等。2)運(yùn)算符:如+、-、*、/、:=、>、<等。3)標(biāo)識(shí)符:用戶定義的變量名、常數(shù)名、函數(shù)名等。不同的高級(jí)程序設(shè)計(jì)語(yǔ)言對(duì)關(guān)鍵字是否可以作為普通標(biāo)識(shí)符有不同的要求,有的語(yǔ)言允許程序員使用關(guān)鍵字作為普通標(biāo)識(shí)符,有的程序設(shè)計(jì)語(yǔ)言則不允許程序員將關(guān)鍵字用著普通標(biāo)識(shí)符(如C/C++、Pascal等都不允許)。在允許程序員將關(guān)鍵字用作普通標(biāo)識(shí)符的程序設(shè)計(jì)語(yǔ)言的編譯器中,編譯器必須具備能夠區(qū)分一個(gè)標(biāo)識(shí)符到底是關(guān)鍵字還是普通標(biāo)識(shí)符的功能。4)常數(shù):如23、6等。5)界符:如“,”、“;”、“(”、“)”、“.”等。注意事項(xiàng)空格的作用僅僅是將一個(gè)個(gè)單詞分割開(kāi)來(lái),源程序中的空格不具備別的語(yǔ)法意義,在語(yǔ)法分析及其后續(xù)階段都沒(méi)有任何作用,因此,詞法分析的另一個(gè)工作是過(guò)濾空格。注釋對(duì)整個(gè)源程序的編譯也沒(méi)有任何語(yǔ)法意義,只是為了便于閱讀和交流,因此,有的編譯程序的詞法分析程序也負(fù)責(zé)過(guò)濾注釋。輸出的單詞符號(hào)采用[單詞類別,單詞自身值]的二元組形式來(lái)表示。為了使掃描程序盡可能的高效,在進(jìn)行詞法分析程序的設(shè)計(jì)和實(shí)現(xiàn)時(shí)還需十分注意掃描程序結(jié)構(gòu)的實(shí)際細(xì)節(jié)問(wèn)題。用于間隔單詞的空格和我們通常所說(shuō)的鍵盤上的空格是不同的,這里的空格指的是所有能引起一個(gè)單詞結(jié)束的字符,它們包括空格、制表或回車換行符。a*(b+c)這樣的沒(méi)有空格間隔的情況時(shí)要正確地識(shí)別出所有的單詞123ab這樣的字符串時(shí),一般字符串的首字符必須為字母,不要將123識(shí)別為數(shù)字,將ab識(shí)別為標(biāo)識(shí)符轉(zhuǎn)換圖說(shuō)明 } returnfalse; case7://關(guān)系符號(hào)1 for(intj=0;j<relation2.length;j++){ if(relation2[j].equals(buffer)){ System.out.println(buffer+"關(guān)系符"+j); returntrue; } } returnfalse; default:System.out.println(buffer+"未知");returnfalse; } } /** *@paramargs *@throwsException */ publicstaticvoidmain(String[]args)throwsException{ reader=newInputStreamReader(newFileInputStream("d://source.c")); charcbuffer; cbuffer=(char)reader.read(); while(!isOver){ if(Character.isLetter(cbuffer)){ cbuffer=alphaprocess(cbuffer); }elseif(Character.isDigit(cbuffer)){

溫馨提示

  • 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)論