實(shí)驗(yàn)一 源程序的預(yù)處理及詞法分析程序設(shè)計(jì)

實(shí)驗(yàn)一 源程序的預(yù)處理及詞法分析程序設(shè)計(jì)

ID:14129318

大小:50.50 KB

頁(yè)數(shù):3頁(yè)

時(shí)間:2018-07-26

實(shí)驗(yàn)一 源程序的預(yù)處理及詞法分析程序設(shè)計(jì)_第1頁(yè)
實(shí)驗(yàn)一 源程序的預(yù)處理及詞法分析程序設(shè)計(jì)_第2頁(yè)
實(shí)驗(yàn)一 源程序的預(yù)處理及詞法分析程序設(shè)計(jì)_第3頁(yè)
資源描述:

《實(shí)驗(yàn)一 源程序的預(yù)處理及詞法分析程序設(shè)計(jì)》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫(kù)

1、實(shí)驗(yàn)一源程序的預(yù)處理及詞法分析程序設(shè)計(jì)(6學(xué)時(shí))一、實(shí)驗(yàn)?zāi)康脑O(shè)計(jì)并實(shí)現(xiàn)一個(gè)包含預(yù)處理功能的詞法分析程序,加深對(duì)編譯中詞法分析過(guò)程的理解。二、實(shí)驗(yàn)要求1、實(shí)現(xiàn)預(yù)處理功能源程序中可能包含有對(duì)程序執(zhí)行無(wú)意義的符號(hào),要求將其剔除。首先編制一個(gè)源程序的輸入過(guò)程,從鍵盤、文件或文本框輸入若干行語(yǔ)句,依次存入輸入緩沖區(qū)(字符型數(shù)據(jù));然后編制一個(gè)預(yù)處理子程序,去掉輸入串中的回車符、換行符和跳格符等編輯性文字;把多個(gè)空白符合并為一個(gè);去掉注釋。2、實(shí)現(xiàn)詞法分析功能輸入:所給文法的源程序字符串。輸出:二元組(syn,token或sum)構(gòu)成的序列。其中,sy

2、n為單詞種別碼。Token為存放的單詞自身字符串。Sum為整型常量。具體實(shí)現(xiàn)時(shí),可以將單詞的二元組用結(jié)構(gòu)進(jìn)行處理。3、待分析的C語(yǔ)言子集的詞法1)關(guān)鍵字mainifthenwhiledostaticintdoublestructbreakelselongswitchcasetypedefcharreturnconstfloatshortcontinueforvoiddefaultsizeofdo所有的關(guān)鍵字都是小寫。2)運(yùn)算符和界符+-*/::=<<><=>>==;()#3)其他標(biāo)記ID和NUM通過(guò)以下正規(guī)式定義其他標(biāo)記:ID→letter

3、(letter

4、digit)*NUM→digitdigit*letter→a

5、…

6、z

7、A

8、…

9、Zdigit→0

10、…

11、9…4)空格由空白、制表符和換行符組成空格一般用來(lái)分隔ID、NUM、專用符號(hào)和關(guān)鍵字,詞法分析階段通常被忽略。4、各種單詞符號(hào)對(duì)應(yīng)的種別碼表1各種單詞符號(hào)的種別碼單詞符號(hào)種別碼單詞符號(hào)種別碼main1;41if2(42then3)43while4int7do5double8static6struct9ID25break10NUM26else11+27long12-28switch13*29case14/30typedef15:

12、31char16:=32return17<33const18<>34float19<=35short20>36continue21>=37for22=38void23default39sizeof24do40#05、詞法分析程序的主要算法思想算法的基本任務(wù)是從字符串表示的源程序中識(shí)別出具有獨(dú)立意義的單詞符號(hào),其基本思想是根據(jù)掃描到的單詞符號(hào)的第一個(gè)字符的種類,拼出相應(yīng)的單詞符號(hào)。1.主程序示意圖主程序示意圖如圖1所示。置初值調(diào)用掃描子程序輸出單詞二元組輸入串結(jié)束結(jié)束否是圖1詞法分析主程序示意圖其中初值包括如下兩方面:(1)關(guān)鍵字表初值關(guān)鍵字

13、作為特殊標(biāo)識(shí)符處理,把它們預(yù)先安排在一張表格中(稱為關(guān)鍵字表),當(dāng)掃描程序識(shí)別出標(biāo)識(shí)符時(shí),查關(guān)鍵字表。如能查到匹配的單詞,則該單詞為關(guān)鍵字,否則為一般標(biāo)識(shí)符。關(guān)鍵字表為一個(gè)字符串?dāng)?shù)組,其描述如下:char*rwtab[27]={“main”,”if”,”then”,”while”,”do”,”static”,”int”,”double”,”struct”,”break”,”else”,”long”,”switch”,”case”,”typedef”,”char”,”return”,”const”,”float”,”short”,”conti

14、nue”,”for”,”void”,”default”,”sizeof”,”do”};(2)程序中需要用到的主要變量:syn,token和sum。2.掃描子程序的算法思想首先設(shè)置三個(gè)變量:token用來(lái)存放構(gòu)成單詞符號(hào)的字符串;sum用來(lái)存放整型單詞;syn用來(lái)存放單詞符號(hào)的種別編碼。掃描子程序主要部分流程如圖2所示。變量初始化忽略空格是是否文件結(jié)束返回否其他符號(hào)運(yùn)算符,界符等符號(hào)字母數(shù)字否對(duì)不同符號(hào)給出相應(yīng)的syn值是否關(guān)鍵字是Syn為對(duì)應(yīng)關(guān)鍵字的單詞種別碼返回報(bào)錯(cuò)拼數(shù)拼字符串Syn=25Syn=26圖2詞法分析程序流程三、實(shí)驗(yàn)報(bào)告要求1

15、.寫出編程思路、源代碼(或流程圖);2.寫出上機(jī)調(diào)試時(shí)發(fā)現(xiàn)的問(wèn)題,以及解決的過(guò)程;3.寫出你所使用的測(cè)試數(shù)據(jù)及結(jié)果;4.談?wù)勀愕捏w會(huì)。5.上機(jī)6小時(shí),完成實(shí)驗(yàn)報(bào)告2小時(shí)。

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無(wú)此問(wèn)題,請(qǐng)放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫(kù)負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭(zhēng)議請(qǐng)及時(shí)聯(lián)系客服。
3. 下載前請(qǐng)仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無(wú)法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請(qǐng)聯(lián)系客服處理。