課程實(shí)驗(yàn)報(bào)告-某種簡單程序語言的詞法分析器的設(shè)計(jì)與實(shí)現(xiàn)_第1頁
課程實(shí)驗(yàn)報(bào)告-某種簡單程序語言的詞法分析器的設(shè)計(jì)與實(shí)現(xiàn)_第2頁
課程實(shí)驗(yàn)報(bào)告-某種簡單程序語言的詞法分析器的設(shè)計(jì)與實(shí)現(xiàn)_第3頁
課程實(shí)驗(yàn)報(bào)告-某種簡單程序語言的詞法分析器的設(shè)計(jì)與實(shí)現(xiàn)_第4頁
課程實(shí)驗(yàn)報(bào)告-某種簡單程序語言的詞法分析器的設(shè)計(jì)與實(shí)現(xiàn)_第5頁
已閱讀5頁,還剩5頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

?編譯原理?課程實(shí)驗(yàn)報(bào)告實(shí)驗(yàn)題目:某種簡單程序語言的詞法分析器的設(shè)計(jì)與實(shí)現(xiàn)專業(yè): 計(jì)算機(jī)科學(xué)與技術(shù)班級:11060341學(xué)號:11060341姓名:intal=0,a2=0,a3=0,a4=0,a5=0;for(inti=O;ivk;i++)if(word[i].kind=1)al++;elseif(word[i].kind==2)a2++;elseif(word[i].kind==3)a3++;elseif(word[i].kind==4)a4++;elseif(word[i].kind=5)a5++;)printf("標(biāo)識符:%d\n常量:%d\n關(guān)鍵字:%d\n界符:%d\n運(yùn)算符:%d\nM,al,a2,a3,a4,a5);return0;)運(yùn)行結(jié)果:實(shí)驗(yàn)?zāi)康模涸O(shè)計(jì)一個詞法分析程序,理解詞法分析器實(shí)現(xiàn)的原理,掌握程序設(shè)計(jì)語言中的各類單詞的詞法分析方法,加深對詞法分析原理的理解。實(shí)驗(yàn)任務(wù):詞法分析是從左向右掃描每行源程序的符號,拼成單詞,換成統(tǒng)一的二元式(單詞種別,單詞符號的屬性值)表示。對給定的程序通過詞法分析器識別一個個單詞符號,并以二元式(單詞種別,單詞符號的屬性值)顯示,本程序那么是通過對給定程序段分析后以單詞符號和文字提示顯示)實(shí)驗(yàn)流程:程序清單:#include<iostream>#include<cstdio>#include<cstring>usingnamespacestd;intk=0;structword(charname[10];intkind;}word[1000];charkey[35][10]={nscanfV,short\,4nt\nlong,,;,float,V,double,V,charn;,struct,V,unionH,nprintf\ntypedef\nconstn,"unsigned0,nsigned,,,nextern,,,nregister,\nstatic,\,\olatile^'\oid\nifV'else^^witch^',case^,,forn;,do,,;,while,,;'goton,,'continue'\,'break,',,,defaultn,,,sizeof',nreturnn,ninclude,V,boor,);boolcmp(chara[])(inti;for(intk=0;k<35;k++)(if(strcmp(a,key[k])=O)return1;)return0;)intmain()(#ifdefLOCALfreopen(nin.txtn,nrH,stdin);freopen(nout.txtH,,,w'\stdout);#endifintp,q,flag;chara[1000],b[10],ch;while(gets(a))(p=0;intlen=strlen(a);while(p<len)(ch=a[p];memset(b,0,sizeof(b));while(ch=,')(P++;ch=a[p];}if((ch>='a&&ch<='z')||(ch>='A'&&ch<=Z)||chD(flag=O;q=0;while((ch>=,a,&&ch<=,z,)||(ch>=,A,&&ch<=,Z,)||ch==t_,ll(ch>=,0,&&ch<='9,))(if((ch>='0&&ch<=9)||ch==])flag=l;b[q++]=ch;P++;ch=a[p];)if(flag==l)(strcpy(word[k].name,b);word[k++].kind=1;}elseif(flag==O)(if(ch='\"||ch=="")(strcpy(word|k].name,b);word|k++].kind=2;)elseif(cmp(b)==l)strcpy(word|k].name,b);word[k++].kind=3;elsestrcpy(word[k].name,b);word[k++].kind=l;)))elseif((ch>='0'&&ch<=9)||ch=='-'){intt=p-l;if(a[t]>=V&&a[t]<=<9,||a[t]>='a,&&a[t]<=,z,||a[t]>=,A'&&a[t]<=,Z,)(p++;ch=a[p];if(ch=='-'||ch==-*)(b[01;b[l]=ch;strcpy(word[k].name,b);word[k++].kind=5;ch=a[++p];)else(b[01;strcpy(word[k].name,b);word|k+4-|.kind=5;))else(q=0;b[q++]=ch;P++;ch=a[p];while((ch>=O&&ch<=9)||ch=Y)(b[q++]=ch;P++;ch=a[p];)strcpy(word|k].name,b);word[k++].kind=2;elseif(ch=W|ch=')'||ch=T||ch=Tllch='{'||ch=T||ch='J|ch=';'||ch=':'||ch=='\"||ch=,ch=’('|[ch==)||ch=TI|ch=TI|ch=T||ch=}||(b[O]=ch;strcpy(word[k].name,b);word|k++].kind=4;ch=a[++p];)elseif(ch=='%'||ch==,A,)(b[O]=ch;strcpy(word[k].name,b);word[k++].kind=5;ch=a[++p];)elseif(ch==,+,)(P++;ch=a[p];if(ch==,+,||ch==-1)(b[0]±4;b[l]=ch;strcpy(word[k].name,b);word[k++].kind=5;ch=a[++p];}else(b[0]='+';strcpy(word[k|.name,b);word[k++].kind=5;))elseif(ch=='*1)(P++;ch=a[p];if(ch=='*'||ch=='=')b[0]='*';b[l]=ch;strcpy(word[k].name,b);word[k++].kind=5;ch=a[++p];)else(b[0]='*';strcpy(word[k].name,b);word[k++].kind=5;))elseif(ch==7,)(P++;ch=a[p];if(ch==7*||ch==,=,)(b[0]=7;b[l]=ch;strcpy(word[k].name,b);word[k++].kind=5;ch=a[++p];)else(b[0]=7;strcpy(word[k].name,b);word[k++].kind=5;))elseif(ch==-*)(P++;ch=a[p];if(ch=-1)(b[O]=b[l]='=\strcpy(word[k].name,b);word[k++].kind=5;ch=a[++p];)elseb[0]='=';strcpy(word[k].name,b);word[k++].kind=5;))elseif(ch=='〉')(p++;ch=a[p];if(ch=->*11^==,=,)(b[0]=『b[l]=ch;strcpy(word[k].name,b);word[k++].kind=5;ch=a[++p];)else(b[0]=>';strcpy(word[k].name,b);word[k++].kind=5;))elseif(ch=='<,)(p++;ch=a[p];if(ch=-<,||ch==-t)(b[0]=v;b[l]=ch;strcpy(word[k].name,b);word[k++].kind=5;ch=a[++p];)else(b[0尸<';strcpy(word[k].name,b);word[k++].kind=5;))elseif(ch=='!*)p++;ch=a[p];if(ch==,=,){b[O]=T;b[l]=~;strcpy(word[k].name,b);word[k++].kind=5;ch=a[++p];)else(b[0]=T;strcpy(word[k].name,b);word[k++].kind=5;))elseif(ch==,&,)(P++;ch=a[p];if(ch==,&,)(b[O]=b[l]='&,;strcpy(word[k].name,b);word[k++].kind=5;ch=a[++p];)else(b[0]='&,;strcpy(word[k].name,b);word[k++].kind=5;})elseif(ch==T)(p++;ch=a[p];if(ch=T)(b[O]=b[l]=T;strcpy(word[k].name,b);word[k++].kind=5;ch=a[++p];)else{b[O]=T;strcpy(word[k].name,b);word[k++].kind=5;)))}for(

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論