freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

[電腦基礎(chǔ)知識(shí)]編譯原理課程設(shè)計(jì)報(bào)告(編輯修改稿)

2025-04-19 02:06 本頁(yè)面
 

【文章內(nèi)容簡(jiǎn)介】 }} //遞規(guī)模塊分析結(jié)束上面兩段程序是對(duì)遞歸模塊的詳細(xì)設(shè)計(jì)還有為完成詳細(xì)設(shè)計(jì)需要用到的一些函數(shù)及功能void processPL(FILE *fpread)//這個(gè)過(guò)程不處理具體的代碼,代碼的分析有LR語(yǔ)法分析階段完成void processVariable(FILE *fpread,int level)//處理變量的過(guò)程,包括判斷變量是否重定義和將變量填入符號(hào)表void processProc(FILE *fpread,int level)//處理過(guò)程的定義void processID(FILE *fpread,int level)//處理過(guò)程的參數(shù)定義,并將過(guò)程的部分信息填入過(guò)程表void processProg(FILE *fpread,int level)//專門處理program開頭的這條語(yǔ)句,也就是分析程序的開頭void skip(FILE *fpread)//這個(gè)函數(shù)用于出錯(cuò)的情況下跳過(guò)若干個(gè)字符,直到遇到var,procedure,begin為止void skipLine(FILE *fpread)/*跳過(guò)換行符*/int searchprocTable(char procName[])//查找是否有同名的過(guò)程void enterProcTable(char procName[],int level,int exProc)//將過(guò)程中定義的過(guò)程名填入過(guò)程表void backPatch()//將過(guò)程定義的變量和參數(shù)信息填入過(guò)程表int searchVarTable(char varName[])//在變量表中查找變量void enterVarTable(char varName[],int level,int relative)//將變量填入變量表void displayVarTable()//將變量表的內(nèi)容在屏幕上顯示出來(lái),方便調(diào)試以及測(cè)試程序運(yùn)行是否正確void displayProcTable()//將過(guò)程表的內(nèi)容在屏幕上顯示出來(lái)void ishaveLast(FILE *fpread)判斷文件是否讀完測(cè)試內(nèi)容1.正確程序結(jié)構(gòu)和各種說(shuō)明語(yǔ)句是否可順利分析,檢查變量表,過(guò)程名表填寫的內(nèi)容是否正確。測(cè)試程序分別是不同嵌套結(jié)構(gòu),不同變量定義的源程序。2.逐漸在測(cè)試程序中加入各種語(yǔ)法錯(cuò)誤,看其能否正確識(shí)別。3.對(duì)lookupv1, lookupv2重點(diǎn)檢查變量的作用域識(shí)別是否正確4.與LR分析器接口的調(diào)試測(cè)試簡(jiǎn)例program A。var x1,y1。procedure AB(x2,y2)。var x3,y3。beginendprocedure ABC(x7,y7)。var x4,y4。procedure ABCD(x5,y5)。var x6,y6。beginendbeginendbeginend.測(cè)試結(jié)果LR分析器模塊詳細(xì)設(shè)計(jì)1. 概述:LR分析法是利用一張LR分析表和一個(gè)分析棧進(jìn)行自下而上的語(yǔ)法分析法,分析程序開始會(huì)讀入一個(gè)二元式,調(diào)用查ACTION表的子程序,得到相應(yīng)得動(dòng)作ACT。因?yàn)長(zhǎng)R分析器只分析可執(zhí)行語(yǔ)句,所以只對(duì)minipascal語(yǔ)言的可執(zhí)行語(yǔ)句部分進(jìn)行語(yǔ)法分析,在分析過(guò)程中加上適當(dāng)?shù)恼Z(yǔ)義處理,實(shí)現(xiàn)“邊分析,邊翻譯”,當(dāng)一條語(yǔ)句分析完也同時(shí)生成符合此語(yǔ)句語(yǔ)義的四元式代碼。在輸入文件中自定義非終結(jié)符,終結(jié)符和產(chǎn)生式集合。通過(guò)對(duì)非終結(jié)符,終結(jié)符和產(chǎn)生式的定義,得出其語(yǔ)法描述。基本思想從待輸入的符號(hào)串開始,利用文法的產(chǎn)生式步步向上歸約,試圖歸約到文法的識(shí)別符號(hào)。如果從語(yǔ)法樹的角度看,它的過(guò)程是以輸入符號(hào)串作為末端結(jié)點(diǎn)符號(hào)串,向著根結(jié)點(diǎn)的方向往上構(gòu)造語(yǔ)法樹,使識(shí)別符號(hào)正好是該語(yǔ)法樹的根結(jié)點(diǎn)。如果最終跟結(jié)點(diǎn)是識(shí)別符號(hào),輸入符號(hào)串被識(shí)別出是相應(yīng)語(yǔ)言的一個(gè)句子:否則不是。LR分析算法LR分析器包括輸入、輸出、棧、驅(qū)動(dòng)程序和含動(dòng)作和轉(zhuǎn)移兩部分的分析表。驅(qū)動(dòng)程序?qū)λ械腖R分析方法都一樣,不同的分析方法構(gòu)造的分析表不同。分析程序每次從輸入緩沖區(qū)讀一個(gè)符號(hào),它使用棧存儲(chǔ)形式為s0X1s1X2s2…Xmsm的串,sm在棧頂。Xi是文法符號(hào),si是叫做狀態(tài)的符號(hào),狀態(tài)符號(hào)概括了棧中它下面部分所含的信息。棧頂?shù)臓顟B(tài)符號(hào)和當(dāng)前的輸入符號(hào)用來(lái)檢索分析表,以決定移進(jìn)歸約分析的動(dòng)作。真正實(shí)現(xiàn)時(shí),文法符號(hào)不必出現(xiàn)在棧里,不過(guò)在我們的討論中總是包含它們以幫助解釋LR分析的行為。分析表由兩部分組成,動(dòng)作函數(shù)action和轉(zhuǎn)移函數(shù)goto。LR分析驅(qū)動(dòng)程序的行為是:LR分析表的存放LR分析表示LR分析法的基本依據(jù),在分析程序運(yùn)行過(guò)程中,需要不斷地查L(zhǎng)R分析表中的動(dòng)作和轉(zhuǎn)向狀態(tài),為此必須把LR分析表存放在一定的數(shù)據(jù)結(jié)構(gòu)中。在LR分析過(guò)程中,所有的單調(diào)(終結(jié)符)均用其單詞編碼來(lái)識(shí)別。對(duì)于規(guī)約狀態(tài),應(yīng)適合所有單詞,對(duì)于移進(jìn)狀態(tài),則只列出與狀態(tài)有關(guān)的單詞。一般將ACTION表和GOTO表分開存放。ACTION表的存放在實(shí)際存放時(shí)只存放表格中具有移進(jìn)或歸約、接受動(dòng)作的單詞編碼及其相應(yīng)的動(dòng)作,用0代表所有出錯(cuò)的情況。二維數(shù)組SA存放ACTION表中的單詞種類及動(dòng)作,第一列存放單詞編碼,第二列存放動(dòng)作。另外設(shè)一個(gè)一維數(shù)組SL作為指示器,Sl的下標(biāo)為狀態(tài)號(hào),SL存放的是此狀態(tài)從SA數(shù)組的第幾行開始。例如SA數(shù)組行號(hào)第一列單詞編碼第二列動(dòng)作1132243004399950061672780091310241100121-3132-31400153-1160017SL數(shù)組下標(biāo)(狀態(tài)號(hào))0 11 42 63 94 125 156 17789GOTO表的存放 GOTO表也可如ACTION表一樣存放。用一個(gè)二維數(shù)組GL存放GOTO表,第一列為原狀態(tài),第二列為GOTO后的下一個(gè)狀態(tài)。GOTO同樣用一個(gè)一維數(shù)組NL作為指示器,NL的下標(biāo)為產(chǎn)生式的編號(hào),庶族的內(nèi)容指向此產(chǎn)生式左部非終結(jié)符的GOTO表從GL數(shù)組的第幾行開始。例如GL表行號(hào)現(xiàn)狀態(tài)下一個(gè)狀態(tài)1012—183694-1257106-13NL數(shù)組1 1 2 13 34 35 56 52. 總體設(shè)計(jì)LR分析器的主要模塊:LR分析總控程序 LRANALYSE查ACTION表模塊查GOTO表模塊顯示分析棧信息模塊(用于測(cè)試)出錯(cuò)處理模塊,初始化模塊:主要是將LR分析表按設(shè)計(jì)好的存貯方式輸入其余模塊是與遞歸下降分析器共同的,例如讀單詞模塊,顯示錯(cuò)誤的信息模塊等。:主要程序模塊如下:LRAnalysise 功能:LR分析器總控程序,即遞歸下降中PL函數(shù)searchActionTable 功能:查ACTION表模塊searchGoToTable 功能:查GOTO表模塊printAct 功能:顯示分析棧信息模塊(用于調(diào)試)searchPL 功能:調(diào)用產(chǎn)生式長(zhǎng)度表fseek 功能:回退一條記錄dealWithExpression 功能:語(yǔ)義處理push 功能:進(jìn)行壓棧操作pop 功能:執(zhí)行出棧操作4. 分析程序分析程序比較簡(jiǎn)單,開始將狀態(tài)0進(jìn)棧,讀入一個(gè)二元式(包括單詞符號(hào)和編碼),調(diào)用查ACTION表的子程序,得到相應(yīng)的動(dòng)作ACT(正數(shù),負(fù)數(shù),999,0 四種情況)。(1)正數(shù):表示移進(jìn),將狀態(tài)及單詞編碼等進(jìn)棧(2)負(fù)數(shù):表示歸約,做相應(yīng)歸約動(dòng)作。歸約的動(dòng)作包含下面幾個(gè)步驟:(產(chǎn)生式編碼)查PL數(shù)組,得到產(chǎn)生式
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評(píng)公示相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1