版權(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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 欽北區(qū)2023-2024年部編版九年級上學期語文期中試卷
- 九年級上學期語文期中考試卷
- 第三中學八年級上學期語文第二次質(zhì)量檢測試卷
- 結(jié)構(gòu)加固合同范本(2篇)
- 《數(shù)學物理方法》第5章測試題
- 南京航空航天大學《單片微控制器原理及應(yīng)用》2022-2023學年期末試卷
- 南京工業(yè)大學浦江學院《商業(yè)銀行經(jīng)營與管理》2023-2024學年第一學期期末試卷
- 分式的約分說課稿
- 噸的認識說課稿
- 南京工業(yè)大學浦江學院《管理學原理》2023-2024學年第一學期期末試卷
- 職工轉(zhuǎn)移申請表
- 網(wǎng)絡(luò)安全檢查表模板
- 貴州省火力發(fā)電企業(yè)名錄2017年125家
- 二年級上冊科學二單元《材料》教材解讀
- 新教材湘教湘科版四年級上冊科學 1.1 各種各樣的聲音 教案(教學設(shè)計)
- 思想道德與法治課件:第四章 第一節(jié) 全體人民共同的價值追求則
- 戰(zhàn)略管理教學ppt課件(完整版)
- DB32-T 3129-2016適合機械化作業(yè)的單體鋼架塑料大棚 技術(shù)規(guī)范-(高清現(xiàn)行)
- 高危新生兒急診服務(wù)流程圖
- 人教版八年級上冊Unit 2 How often do you exercise聽說課的集體備課教學設(shè)計
- 五四制青島版2022-2023五年級科學上冊第八單元第26課《我們的住宅》課件(定稿)
評論
0/150
提交評論