資源描述:
《編譯原理實驗指導書》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、編譯原理實驗指導書適用專業(yè):計算機應用編制單位:上海電力學院計信學院計算機系編制時間:2005年8月第一章前言本實驗指導書提供的實驗情況如下:1、實驗次數(shù):本課程總共開設(shè)4次實驗。2、總實驗學時:為17學時3、實驗硬件和環(huán)境需求:(1)微機,64M以上內(nèi)存。(2)安裝了相應的高級語言程序設(shè)計系統(tǒng),如:C語言,或DELPHI,C++,JAVA等高級語言的程序設(shè)計環(huán)境。(3)安裝了相應的匯編語言程序設(shè)計系統(tǒng)。4、實驗所需的基礎(chǔ)知識:學生應該熟悉高級程序設(shè)計的方法,數(shù)據(jù)結(jié)構(gòu)和匯編語言課程的相關(guān)基本知識。5、實驗分基礎(chǔ)部分和提高部分,供學生按照自己的能力和水平選擇,基礎(chǔ)部分的內(nèi)容是配
2、合編譯原理課程的教學進度設(shè)計的,應該是必需完成的實驗。第一章基礎(chǔ)實驗實驗一詞法分析一、實驗目的:通過本實驗理解詞法分析的整個過程,處理對象和處理的結(jié)果,了解詞法分析在整個編譯過程中的作用。二、實驗學時:4學時。三、實驗內(nèi)容根據(jù)給出的簡單語言的詞法構(gòu)成規(guī)則和單詞集合,編制詞法分析程序,要求能將用給定簡單語言語言書寫的源程序進行詞法分析,同時建立相應的符號表文件存放正確的單詞。輸出分析結(jié)果于文件中,包括:(1)正確的單詞符號及其單詞種類的序?qū)ΧM。(2)錯誤單詞的信息。若有錯誤,必須輸出錯誤單詞在源程序中的行位置。具體輸出形式為:二元組:(單詞種類,單詞內(nèi)碼值)或三元組:(單詞
3、種類,單詞內(nèi)碼值,源程序中的行號)單詞種類見五。四、實驗方法構(gòu)造識別單詞集的自動機,編寫程序?qū)崿F(xiàn)。五、實驗的處理單詞集(注:單詞種類統(tǒng)一分類如下:)單詞符號單詞種類任意變量名0(1)2{3}4;5=6+7*8>9<10,11‘12整型常數(shù)30main20int21if22then23else24return25出錯100六、處理程序例和處理結(jié)果例例1:源程序:main(){y=x-1;}處理結(jié)果:(26,"main")(1,"(")(2,")")(3,"{")(0,"y")(6,"=")(0,"x")(,d"-(20,"1")(5,";")(4,")")例2:源程序main(
4、){inta,b;6:a;b=a-1;}處理結(jié)果:(26,"main")(1,"(")(2,")")(3,"{"}(21,”int”)(0,"a")(11,",")(0,"b")(5,”;”)(30,"6")(100,":")(0,"a")(5,”;”)(0,"b")(6,"=")(0,"a")(100,"-")(30,"1")(5,”;”)(4,"})")七、參考代碼#include#definen100main(){chara[n],t;inti,r=1,m=0;a[0]='';for(i=1;;i++){scanf("%c",&t);if(t!='#')
5、{a[i]=t;r++;}elsebreak;}for(i=1;i6、if(c=='=')printf("=6");elseif(c=='+')printf("+7");elseif(c=='*')printf("*8");elseif(c=='>')printf(">9");elseif(c=='<')printf("<10");elseif(c==',')printf(",11");elseif(a[*i-1]==''
7、
8、a[*i-1]==''){if(c=='i'){if(a[*i+1]=='n'&&a[*i+2]=='t'&&a[*i+3]==''){printf("int21");*i=*i+2;ret
9、urn*i;}elseif(a[*i+1]=='f'&&a[*i+2]==''){printf("if22");*i=*i+1;return*i;}}elseif(c=='t'){if(a[*i+1]=='h'&&a[*i+2]=='e'&&a[*i+3]=='n'&&a[*i+4]==''){printf("then23");*i=*i+3;return*i;}}elseif(c=='e'){if(a[*i+1]=='l'&&a[*i+2]=='s'&&a[*i+3]=='e'&&a[*i+4