實驗一-詞法分析程序的設計與實現_第1頁
實驗一-詞法分析程序的設計與實現_第2頁
實驗一-詞法分析程序的設計與實現_第3頁
實驗一-詞法分析程序的設計與實現_第4頁
實驗一-詞法分析程序的設計與實現_第5頁
已閱讀5頁,還剩1頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

實驗一詞法分析程序的設計與實現一、實驗內容【實驗目的和要求】設計、編制、調試一個具體的詞法分析程序,加深對詞法分析原理的理解?!緦嶒瀮热荨客ㄟ^對PL/0詞法分析程序(GETSYM)的分析,并在此基礎上按照附錄A中給出的PL/0語言的語法描述,編寫一個PL/0語言的詞法分析程序。此程序應具有如下功能:輸入為字符串(待進行詞法分析的源程序),輸出為單詞串,即由(單詞、類別)所組成的二元組序列。有一定檢查錯誤的能力,例如發(fā)現2A這類不能作為單詞的字符串?!緦嶒灜h(huán)境】WindowsPC機,任何語言。【提交內容】提交實驗報告,報告內容如下:目的要求、算法描述、程序結構、主要變量名說明、程序清單、調試情況、設計技巧、心得體會。提交源程序和可執(zhí)行文件?!緦W時】4課時。二、實驗說明詞法分析程序的任務就是掃描源程序,依據詞法規(guī)則識別單詞并報告構詞錯誤信息。通常將單詞分為5種類型。1)基本字:也叫關鍵字、保留字,是程序設計語言用來表示特定語法含義的一種標識符,如if、begin等。2)運算符:如+、-、*、/、:=、>、<等。3)標識符:用戶定義的變量名、常數名、函數名等。不同的高級程序設計語言對關鍵字是否可以作為普通標識符有不同的要求,有的語言允許程序員使用關鍵字作為普通標識符,有的程序設計語言則不允許程序員將關鍵字用著普通標識符(如C/C++、Pascal等都不允許)。在允許程序員將關鍵字用作普通標識符的程序設計語言的編譯器中,編譯器必須具備能夠區(qū)分一個標識符到底是關鍵字還是普通標識符的功能。4)常數:如23、6等。5)界符:如“,”、“;”、“(”、“)”、“.”等。注意事項空格的作用僅僅是將一個個單詞分割開來,源程序中的空格不具備別的語法意義,在語法分析及其后續(xù)階段都沒有任何作用,因此,詞法分析的另一個工作是過濾空格。注釋對整個源程序的編譯也沒有任何語法意義,只是為了便于閱讀和交流,因此,有的編譯程序的詞法分析程序也負責過濾注釋。輸出的單詞符號采用[單詞類別,單詞自身值]的二元組形式來表示。為了使掃描程序盡可能的高效,在進行詞法分析程序的設計和實現時還需十分注意掃描程序結構的實際細節(jié)問題。用于間隔單詞的空格和我們通常所說的鍵盤上的空格是不同的,這里的空格指的是所有能引起一個單詞結束的字符,它們包括空格、制表或回車換行符。a*(b+c)這樣的沒有空格間隔的情況時要正確地識別出所有的單詞123ab這樣的字符串時,一般字符串的首字符必須為字母,不要將123識別為數字,將ab識別為標識符轉換圖說明 } returnfalse; case7://關系符號1 for(intj=0;j<relation2.length;j++){ if(relation2[j].equals(buffer)){ System.out.println(buffer+"關系符"+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. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論