資源描述:
《陳志剛《編譯原理》實(shí)驗(yàn)指導(dǎo)書》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、《編譯原理》實(shí)驗(yàn)指導(dǎo)書編著陳志剛中南大學(xué)軟件學(xué)院2006年11月9第一部分詞法分析(實(shí)驗(yàn)一必作)實(shí)驗(yàn)一詞法分析程序設(shè)計(jì)與實(shí)現(xiàn)一、實(shí)驗(yàn)?zāi)康募由顚?duì)詞法分析器的工作過程的理解;加強(qiáng)對(duì)詞法分析方法的掌握;能夠采用一種編程語言實(shí)現(xiàn)簡(jiǎn)單的詞法分析程序;能夠使用自己編寫的分析程序?qū)?jiǎn)單的程序段進(jìn)行詞法分析。二、實(shí)驗(yàn)內(nèi)容自定義一種程序設(shè)計(jì)語言,或者選擇已有的一種高級(jí)語言,編制它的詞法分析程序。詞法分析程序的實(shí)現(xiàn)可以采用任何一種編程語言和編程工具。從輸入的源程序中,識(shí)別出各個(gè)具有獨(dú)立意義的單詞,即關(guān)鍵字、標(biāo)識(shí)符、常數(shù)、運(yùn)算符、界符。
2、并依次輸出各個(gè)單詞的內(nèi)部編碼及單詞符號(hào)自身值。(遇到錯(cuò)誤時(shí)可顯示“Error”,然后跳過錯(cuò)誤部分繼續(xù)顯示)三、實(shí)驗(yàn)要求:1.對(duì)單詞的構(gòu)詞規(guī)則有明確的定義;2.編寫的分析程序能夠正確識(shí)別源程序中的單詞符號(hào);3.識(shí)別出的單詞以<種別碼,值>的形式保存在符號(hào)表中,正確設(shè)計(jì)和維護(hù)符號(hào)表;4.對(duì)于源程序中的詞法錯(cuò)誤,能夠做出簡(jiǎn)單的錯(cuò)誤處理,給出簡(jiǎn)單的錯(cuò)誤提示,保證順利完成整個(gè)源程序的詞法分析;四、實(shí)驗(yàn)步驟1.定義目標(biāo)語言的可用符號(hào)表和構(gòu)詞規(guī)則;2.依次讀入源程序符號(hào),對(duì)源程序進(jìn)行單詞切分和識(shí)別,直到源程序結(jié)束;3.對(duì)正確的單
3、詞,按照它的種別以<種別碼,值>的形式保存在符號(hào)表中;4.對(duì)不正確的單詞,做出錯(cuò)誤處理。五、實(shí)驗(yàn)報(bào)告要求詳細(xì)說明你的程序的設(shè)計(jì)思路和實(shí)現(xiàn)過程。用有限自動(dòng)機(jī)或者文法的形式對(duì)詞法定義做出詳細(xì)說明,說明詞法分析程序的工作過程,說明錯(cuò)誤處理的實(shí)現(xiàn)。9參考資料一、程序要求1、以下面一段程序?yàn)槔齧ain(){inta,b;a=10;b=a+20;}2、需要識(shí)別的詞1.關(guān)鍵字:if、int、for、while、do、return、break、continue;單詞種別碼為1。2.標(biāo)識(shí)符;單詞種別碼為2。3.常數(shù)為無符號(hào)整形數(shù);單
4、詞種別碼為3。4.運(yùn)算符包括:+、-、*、/、=、、<、=、<=、!=;單詞種別碼為4。5.分隔符包括:,、;、{、}、(、);單詞種別碼為5。3、程序輸出形式要求輸出下面的形式:(2,”main”)(5,”(“)(5,”)“)(5,”{“)(1,”int”)(2,”a”)(5,”,”)(2,”b”)(5,”;”)(2,”a”)(4,”=”)(3,”10”)(5,”;”)(2,”b”)(4,”=”)(2,”a”)(4,”+”)(3,”20”)(5,”;”)9(5,”}“)二、程序設(shè)計(jì)思路這里以開始定義的C語言子集的
5、源程序作為詞法分析程序的輸入數(shù)據(jù)。在詞法分析中,自文件頭開始掃描源程序字符,一旦發(fā)現(xiàn)符合“單詞”定義的源程序字符串時(shí),將它翻譯成固定長(zhǎng)度的單詞內(nèi)部表示,并查、填適當(dāng)?shù)男畔⒈?。?jīng)過詞法分析后,源程序字符串(源程序的外部表示)被翻譯成具有等長(zhǎng)信息的單詞串(源程序的內(nèi)部表示),并產(chǎn)生兩個(gè)表格:常數(shù)表和標(biāo)識(shí)符表,它們分別包含了源程序中的所有常數(shù)和所有標(biāo)識(shí)符。1.定義部分:定義常量、變量、數(shù)據(jù)結(jié)構(gòu)。2.初始化:從文件將源程序全部輸入到字符緩沖區(qū)中。3.取單詞前:去掉多余空白。4.取單詞:利用實(shí)驗(yàn)一的成果讀出單詞的每一個(gè)字符,
6、組成單詞,分析類型。5.顯示結(jié)果。9第二部分語法分析(任選其中一個(gè)做實(shí)驗(yàn))實(shí)驗(yàn)二預(yù)測(cè)分析法設(shè)計(jì)與實(shí)現(xiàn)一、實(shí)驗(yàn)?zāi)康募由顚?duì)語法分析器工作過程的理解;加強(qiáng)對(duì)預(yù)測(cè)分析法實(shí)現(xiàn)語法分析程序的掌握;能夠采用一種編程語言實(shí)現(xiàn)簡(jiǎn)單的語法分析程序;能夠使用自己編寫的分析程序?qū)?jiǎn)單的程序段進(jìn)行語法翻譯。二、實(shí)驗(yàn)內(nèi)容在實(shí)驗(yàn)1的基礎(chǔ)上,用預(yù)測(cè)分析法編制語法分析程序,語法分析程序的實(shí)現(xiàn)可以采用任何一種編程語言和工具。三、實(shí)驗(yàn)要求:1.對(duì)語法規(guī)則有明確的定義;2.編寫的分析程序能夠?qū)?shí)驗(yàn)一的結(jié)果進(jìn)行正確的語法分析;3.對(duì)于遇到的語法錯(cuò)誤,能夠做
7、出簡(jiǎn)單的錯(cuò)誤處理,給出簡(jiǎn)單的錯(cuò)誤提示,保證順利完成語法分析過程;4.實(shí)驗(yàn)報(bào)告要求用文法的形式對(duì)語法定義做出詳細(xì)說明,說明語法分析程序的工作過程,說明錯(cuò)誤處理的實(shí)現(xiàn)。四、實(shí)驗(yàn)步驟1.定義目標(biāo)語言的語法規(guī)則;2.求解預(yù)測(cè)分析方法需要的符號(hào)集和分析表;3.依次讀入實(shí)驗(yàn)一的分析結(jié)果,根據(jù)預(yù)測(cè)分析的方法進(jìn)行語法分析,直到源程序結(jié)束;4.對(duì)遇到的語法錯(cuò)誤做出錯(cuò)誤處理。五、實(shí)驗(yàn)報(bào)告要求詳細(xì)說明你的程序的設(shè)計(jì)思路和實(shí)現(xiàn)過程。實(shí)驗(yàn)報(bào)告要求用文法的形式對(duì)語法定義做出詳細(xì)說明,說明語法分析程序的工作過程,說明錯(cuò)誤處理的實(shí)現(xiàn)。9實(shí)驗(yàn)三算符
8、優(yōu)先分析法設(shè)計(jì)與實(shí)現(xiàn)一、實(shí)驗(yàn)?zāi)康募由顚?duì)語法分析器工作過程的理解;加強(qiáng)對(duì)算符優(yōu)先分析法實(shí)現(xiàn)語法分析程序的掌握;能夠采用一種編程語言實(shí)現(xiàn)簡(jiǎn)單的語法分析程序;能夠使用自己編寫的分析程序?qū)?jiǎn)單的程序段進(jìn)行語法翻譯。二、實(shí)驗(yàn)內(nèi)容在實(shí)驗(yàn)1的基礎(chǔ)上,用算符優(yōu)先分析法編制語法分析程序,語法分析程序的實(shí)現(xiàn)可以采用任何一種編程語言和工具。三、實(shí)驗(yàn)要求:1.對(duì)語法規(guī)則有明確的定義