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

正文內(nèi)容

自頂向下語法分析教學(xué)輔助軟件的開發(fā)畢業(yè)論文(編輯修改稿)

2025-07-21 04:16 本頁面
 

【文章內(nèi)容簡介】 ylst) //輸出FIRST集 FOLLOW集合求解算法實現(xiàn)在求FOLLOW集時按照以下步驟來進行:X是開始符號,把‘’加入到FOLLOW(X);A→αBβ是一個產(chǎn)生式,則把FIRST(β)/ε加到FOLLOW(B);A→αBβ是一個產(chǎn)生式,或A→αBβ是一個產(chǎn)生式而β=ε,則把FOLLOW(A)加入到FOLLOW(B)中。FOLLOW集合求解算法的實現(xiàn)和FIRST集的類似。在求某個非終結(jié)符FIRST集時先掃描產(chǎn)生式左部不同的產(chǎn)生式,然后掃描左部相同的產(chǎn)生式的每一個右部。而在求FOLLOW集的時候,則需要掃描每一個產(chǎn)生式,第一次掃描可以確定哪些FIRST集或FOLLOW集屬于所求的FOLLOW集,由于FIRST集已經(jīng)求出,所以第一次掃描就可以把相應(yīng)的FIRST集加入到FOLLOW集中,設(shè)置FOLLOW集完成標(biāo)記位,設(shè)置隊列,把未完成的非終結(jié)符送入隊列,依次取出隊列元素,把求出FOLLOW集的非終結(jié)符的FOLLOW集加入到相應(yīng)的FOLLOW集中,把未求出的送回隊列。主要的實現(xiàn)方法如下所示:public ArrayList FOLLOWSet(ArrayList aryFIRST)//得到FOLLOW集private ArrayList FOLLOWLetter(string strChar,ArrayListarylstFOLLOW)// 返回所有產(chǎn)生式右部指定的字符后邊的字母public void outFOLLOW(ArrayList arylst)//輸出FOLLOW集public String OutFIRSTFOLLOW(ArrayList irst,ArrayList FOLLOW)//輸出FIRST集和FOLLOW集到網(wǎng)頁表格 SELECT集合求解算法實現(xiàn)若α是終結(jié)符,那么SELLECT(A→α)={α}。若α是ε,則SELECT(A→α)=FOLLOW(A)。若α是非終結(jié)符那么 若α*=ε,則SELECT(A→α)= FIRST(α)∪FOLLOW(A)。 若α┐*=ε,SELECT(A→α)=FIRST(α)。主要的實現(xiàn)方法如下所示:public ArrayList SelectSet(ArrayList aryFIRST, ArrayList aryFOLLOW) //得到SELECT集;public void outSellect(ArrayList arylst)//輸出SELCET集 LL(1)文法的判定實現(xiàn)當(dāng)SELECT集求出來后就可以判斷是不是一個文法是不是LL(1)文法了,掃描產(chǎn)生式左部相同的SELCET集是否含有相同元素,一旦發(fā)現(xiàn)相同元素返回FALSE,用public bool IsLL1(ArrayList select)來方來實現(xiàn)具體代碼如下:if( i== ){(arylistRight)。//判斷左部相同的產(chǎn)生式的SLECT集是否含有相同元素for(int i=0 。 i 。 i++){//把左部相同的產(chǎn)生式的SLECT集取出ArrayList currentList=(ArrayList)ListSelect[i]。ArrayList [] arrList = (currentList)。//比較一組ArrayList中是否含有相同元素if((arrList))return false。}return true。} 語法正確性判斷實現(xiàn)在實際分析時設(shè)置兩個棧,把‘’壓入分析棧和剩余符號棧,把開始符壓入分析棧,把輸入串從右向左送入剩余符號棧,然后只要兩個棧元素個數(shù)同時大于1,那么依次從兩個棧中取出兩個元素進行比較,假如一樣就匹配,否則就不是該文法的句子。public bool CheckString(string strValue, string strat, Hashtable hashAnalysis)//分析字符串(strNotSymbol+(string)currentList[j], [i].ToString())。 預(yù)測分析表構(gòu)造和分析過程實現(xiàn)預(yù)測分析表的算法的步驟如下:對文法G的每個產(chǎn)生式A→α執(zhí)行第2步和第3步;對每個終結(jié)符號a∈FIRST(α),把A→α加至M[A,b];若ε∈FIRST(α),則對任何b∈FOLLOW(A)把A→α加到M[A,b]中;把所有無定義的M[A,b]標(biāo)上“出錯標(biāo)志”。根據(jù)以上步驟我們就可以構(gòu)造出預(yù)測分析表,根據(jù)預(yù)測分析表我們可以得出預(yù)測分析的步驟,同時也就判定了一個句子,主要實現(xiàn)方法如下。public Hashtable BuildAnalysis(ArrayList select)//構(gòu)建預(yù)測分析表public void OutTableStep(int step, string str2, string str3, string str4)//輸出分析步驟到網(wǎng)頁表格 相關(guān)類的介紹SymboleSet類表示終結(jié)符和非終結(jié)符集合,Product類是產(chǎn)生式類,它的一個類對象記錄一個左部,和多個右部產(chǎn)生式。因為程序中用到了棧,隊列和ArrayList類(對象數(shù)組類,數(shù)組中每個元素都可以是一個object對象),因此還編寫了Tools類,來處理一些棧的順序輸出,棧的逆序輸出,ArrayList的連接,輸出等操作。Tools類的UML圖如圖32所示。圖32 Tools類的UML圖 第4章 系統(tǒng)的運行與測試本章展示軟件運行的界面效果,同時對軟件運行結(jié)果的正確性進行檢測,以檢驗是否到達到了預(yù)期目的。 界面的運行效果本系統(tǒng)只要安裝了Win2000以上的版本的操作系統(tǒng)以及Framwork SDK 版本以后,打過包的程序就可以直接運行了,本節(jié)展示運行時的界面效果。進入主界面,可以看到與語法分析相關(guān)內(nèi)容的介紹,如圖41所示。圖41 介紹說明在“終結(jié)和非終結(jié)符”頁面上,輸入終結(jié)符號以及非終結(jié)符號,以便進行下一步的操作。如果自己進行編輯,每輸入一個符號就要換一行,或者直接打開相關(guān)的文件也可以得到已經(jīng)編輯好了的終結(jié)以及非終結(jié)符號。界面效果如圖42所示。圖42 終結(jié)符和非終結(jié)符在“文法規(guī)則”界面,輸入相應(yīng)的文法規(guī)則,或者直接打開文法規(guī)則文件,并把它們顯示在窗體上,如圖43所示(為用戶使用方便,輸入ε時用$代替)。圖43 輸入產(chǎn)生式規(guī)則在“自頂而下語法分析”頁面上輸入所要測試的字符串,點擊測試按鈕就可以得到最終結(jié)果,同時也可以把最后的結(jié)果導(dǎo)出,以網(wǎng)頁的形式保存在磁盤中,如圖44所示。圖44 輸出結(jié)果在進行了以上的相關(guān)操作以后我們就可以得到所要的結(jié)果了。軟件會把一個文法的FIRST集、FOLLOW集、SELECT集、預(yù)測分析表和預(yù)測分析過程全部在WEB BROWER控件上顯示出來。進行操作的時候為每個按鈕設(shè)置了一個快捷鍵,以方便使用。例
點擊復(fù)制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1