C++源代碼單詞掃描程序_第1頁
C++源代碼單詞掃描程序_第2頁
C++源代碼單詞掃描程序_第3頁
C++源代碼單詞掃描程序_第4頁
C++源代碼單詞掃描程序_第5頁
已閱讀5頁,還剩2頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、精選優(yōu)質(zhì)文檔-傾情為你奉上精選優(yōu)質(zhì)文檔-傾情為你奉上專心-專注-專業(yè)專心-專注-專業(yè)精選優(yōu)質(zhì)文檔-傾情為你奉上專心-專注-專業(yè)院 系:計 算 機 學 院實驗課程:編譯原理實驗實驗項目:C+源代碼單詞掃描程序(詞法分析)指導老師:黃煜廉實驗項目C+源代碼單詞掃描程序(詞法分析)實驗要求C+源代碼掃描程序識別C+記號。C+語言包含了幾種類型的記號:標識符,關(guān)鍵字,數(shù)(包括整數(shù)、浮點數(shù)),字符串、注釋、特殊符號(分界符)和運算符號等。打開一個C+源文件,打印出所有以上的記號。要求應(yīng)用程序應(yīng)為Windows界面。選作部分:為了提高C+源程序的可讀性,C+程序在書寫過程中加入了空行、空格、縮進、注釋等。

2、假設(shè)你想犧牲可讀性,以節(jié)省磁盤空間,那么你可以存貯一個刪除了所有不必要空格和注釋的C+源程序的壓縮文本。因此,程序中還應(yīng)該有這樣的壓縮功能。選作部分:進一步思考或?qū)崿F(xiàn)如何進一步實現(xiàn)減小源文件大小的壓縮功能。應(yīng)該書寫完善的軟件文檔。需求分析根據(jù)所需的功能程序應(yīng)分為分析關(guān)鍵字、分析標識符、分析數(shù)字、分析串、分析注釋、分析特殊字符和過濾多余字符幾部分。關(guān)鍵字有iostream.h.main.while .goto include for break case if struct class等。過濾字符要考慮到空格和換行。實驗代碼#include #include #include #include

3、#include FILE *fp;char string(char c); /字符串處理char ch;char *operate6=+,-,*,/,+,-; char *note4=/,/*,*/,;char *symbol31=%,$,&,_,#,=,;char *keyword35=iostream.h,include,break,case,char,const,continue,default,do,double, else,enum,cin,float,for,goto,if,int,long,cout, return,short,signed,sizeof,static,stru

4、ct,switch,typedef, printf,union,unsigned,void,volatile,while,main; int search(char searchstr,int type) /符號匹配查找int i;switch (type)case 1:for(i=0;i35;i+) if(strcmp(keywordi,searchstr)=0) return 1; case 2:for(i=0;i=5;i+)if(strcmp(operatei,searchstr)=0)return 1;break;case 3: for(i=0;i31;i+) if(strcmp(sy

5、mboli,searchstr)=0) return 1; break;case 4: for(i=0;i=3;i+) if(!strcmp(notei,searchstr)&i=3) string(searchstr);break; else if(!strcmp(notei,searchstr)return 1; break;return 0;char letter(char ch)/字母處理int i=-1;char letter50;while (isalnum(ch)|ch=.) letter+i=ch;ch=fgetc(fp);letteri+1=0;if (search(lett

6、er,1)coutletter 關(guān)鍵字endl;elsecoutletter 標識符endl;return(ch);char number(char ch)/數(shù)字處理int i=-1;char num20;while (isdigit(ch)!=0)num+i=ch;ch=fgetc(fp);if(isalpha(ch)!=0)while(!isspace(ch)num+i=ch; ch=fgetc(fp);numi+1=0;coutnum錯誤!endl;goto loop;numi+1=0;coutnum 數(shù)字endl;loop: return(ch);char other(char ch)

7、int i=-1;char other1000;if (isspace(ch) /是空格ch=fgetc(fp);goto loop;while (!isspace(ch)&(!isalnum(ch) /不是空格 且不是字母或數(shù)字other+i=ch;ch=fgetc(fp); /若是字母,不是空格的判斷沒有寫出來otheri+1=0;if (search(other,2)coutother 算數(shù)運算符endl;elseif (search(other,3)coutother 特殊符號endl;elseif (search(other,4)coutother 注釋符endl;loop: ret

8、urn (ch);char string(char c)/字符串int i=0 ; /char ch;char stri100;strii=c0;ch=fgetc(fp);while (ch!=)stri+i=ch;ch=fgetc(fp);stri+i=ch;stri+i=0;coutstri 字符串endl;return(ch);int main ()char str,c;coutFileName;fp=fopen(FileName,r); if(fp=NULL)coutUnable to open file!endl;return 0;elsecoutOpen the file successfully!endl;coutfpendl;str=fgetc(fp); while (str!=EOF)if (isalpha(str)str=let

溫馨提示

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

評論

0/150

提交評論