




下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、1. 課程設(shè)計(jì)目的:1.1 設(shè)計(jì)目的:通過編程實(shí)現(xiàn)語法分析(自上而下,自下而上)的可視化過程,加深對兩法分析原理思想的理解。 目的要求通過設(shè)計(jì)編制調(diào)試一個具體的語法分析程序,加深對語法分析原理的理解。并掌握在對程序設(shè)計(jì)語言源程序進(jìn)行掃描過程中將其進(jìn)行語法分析的方法。 題目分析遞歸下降分析方法是一種確定的自上而下分析方法。它的基本思想是給文法的每一個非終結(jié)符均設(shè)計(jì)一個相應(yīng)的子程序。由于文法的產(chǎn)生式往往是遞歸的,因?yàn)檫@些子程序往往也是遞歸的。1.2 開發(fā)環(huán)境:操作系統(tǒng):Windows XP輔助工具:Visual Studio 2008編程語言:C#2. 課程設(shè)計(jì)要求( 1 ) 選定 一文 法 ,選
2、 定一 種分 析方 法 (自 上而 下、 自下 而 上)(2 )允許用戶輸入語句并對該語句進(jìn)行相應(yīng)的語法分析( 3 )要求顯示語法樹的建立過程以及跟蹤分析表和分析棧的 狀態(tài)( 4 ) 要 提供 單步 運(yùn) 行, 讓用 戶跟 蹤分 析 器工 作的 每一 個步 驟 。3. 總體設(shè)計(jì)3.1 設(shè)計(jì)框架 :初始化“分析棧”:“&”、“E”分別入棧初始化“輸入棧”:把用戶輸入的字 符申,按倒序每一個分別壓入棧3.2程序流程圖:開始輸入將要分析的字符申取分析棧棧頂元素4.設(shè)計(jì)功能描述:(1)該課程設(shè)計(jì)對語法分析指定了固定的文法,運(yùn)行界面為:.芯摘譯原龍語法分析察自上而下了現(xiàn)有文法如下:E-TCC-+TC| e
3、T-FDD-*FD| F-(E)|i請輸入分析的字符串:分析結(jié)果;我:輸入:給出:“開始”,會出現(xiàn)提示:(3)用戶輸入字符串,可以點(diǎn)擊軟件根據(jù)該輸入字符串做下一步好初始化工作,再點(diǎn)擊“ J”,開始分析,每一次點(diǎn)擊“下一次”,就做分析的一個步驟,并且此時(shí)分析棧和 輸入棧做相應(yīng)的出棧、入棧的的動作,同時(shí)在“分析棧”,“輸入棧”,“輸出棧” 會顯示出相應(yīng)的狀態(tài)。分析結(jié)果;(4)分析結(jié)果顯示在中(5)如果在分析完后,還需要繼續(xù)輸入字符串分析的畫,點(diǎn)擊重置可以再次作上述的操作(6)如果想退出程序,點(diǎn)擊,此時(shí)會彈出提示窗口:,點(diǎn)擊“確定”,便退出程序。分析實(shí)例:輸入分析的字符串為i* (i+i)結(jié)果如下:
4、分析結(jié)果:I分析成功!卷ftE ACT &CDF ftCDi &CD &CDF* &CDF &CD) E ( ftCD)E ftCD)CT &CD)CDF 也CD)CDi &CD)CD acd)c ACD)CT+ &CD)CT ftCD)CDF ACD) CDi &CD)CD &CD)C &CD) ftCD也C &5.源程序代碼:輸入;輸出二i*(i + i)&*(i + i)& (i+i)也 (i+i)& i + i)& i + i)也 i + i)& i + i)& + i)ft + i)& + i)ft 慨i)& )&)& &ftE-TC TFD FiD*FDF (E)ETC TFDFi
5、D e C+TCTFDFiDeC一一 eD e C E#region 相關(guān)初始量( 都是全局的)public string mystring = TC, FALSE, FALSE, TC, FALSE, FALSE, FALSE, +TC , FALSE, FALSE,屋,e, FD, FALSE, FALSE, FD, FALSE, FALSE, FALSE, e, *FD, FALSE, , , i , FALSE, FALSE, (E) , FALSE, FALSE ; 分析表數(shù)組bool con = true ; / 控制顯示的布爾量private Stack MyStack = ne
6、w Stack (); / 申請一個分析棧private Stack MyInputstack = new Stack (); / 申請一個輸入棧public string Term = i , + , * , ( , ) , & ;/ 終結(jié)符數(shù)組public string unTerm = E , C, T , D , F ; / 非終結(jié)符數(shù)組private int line, row; / 定義行,列的全局變量string MyNowString;#endregion “開始”按鈕實(shí)現(xiàn)的函數(shù)private void 開始 _Click( object sender, EventArgs e
7、)if (Input_richTextBox1.Text = )MessageBox.Show( 請輸入要分析的字符串! );elsethis .MyOutput_listBox3.Items.Add( );MyStack.Push(&);MyStack.Push(E);MyStack_listBox1.Items.Add( &E);MyInput_listBox2.Items.Add(Input_richTextBox1.Text +& );MyInputstack.Push(& );for ( int i = Input_richTextBox1.Text.Length - 1; i =
8、0; i-)MyInputstack.Push(Input_richTextBox1.Texti);begin.Enabled =false ;#region “下一步”按鈕實(shí)現(xiàn)的函數(shù)private void 下一步 _Click( object sender, EventArgs e)int loc;string MyStackTop, MyStackInputTop;MyStackTop = MyStack.Peek().ToString();MyStackInputTop = MyInputstack.Peek().ToString();MyStackTopOne(MyStackTop)
9、;if (MyStackTopOne(MyStackTop)MyStackTopTwo(MyStackTop, MyStackInputTop);else if (MyStackTopThree(MyStackTop) &MyInputStackTopOne(MyStackInputTop)loc = line * 6 + row;MyNowString = mystringloc;this .MyOutput_listBox3.Items.Add(MyStack.Peek().ToString() +- +mystringloc);Analyse();elseRezult_richTextB
10、ox2.Text = 分析出錯! ;nextStep.Enabled =false ;con =false ;if (con)ShowMyStack();ShowMyInpuStack();#endregion#region 顯示分析棧里的字符private void ShowMyStack()string ch = ;int len = MyStack.Count;string display = ;for ( int i = 0; i = 0; i-)ch = ch + displayi;MyStack.Push(displayi);this .MyStack_listBox1.Items
11、.Add(ch);#endregion#region 顯示輸入棧里的字符private void ShowMyInpuStack() int len = MyInputstack.Count;string display = ;for ( int i = 0; i = 0; i-)MyInputstack.Push(displayi);this .MyInput_listBox2.Items.Add(display);#endregion#region 判斷狀態(tài)棧棧頂元素是否為終結(jié)符public bool MyStackTopOne( string stack) bool symbol = f
12、alse ;for ( int i = 0; i Term.Length; i+)if (stack = Termi)symbol =true ;break ; return symbol;#endregion#region 狀態(tài)棧棧頂元素是終結(jié)符的處理方法input)private void MyStackTopTwo( string stack, stringif (stack = input)if (stack =& )Rezult_richTextBox2.Text = 分析成功!nextStep.Enabled =false ;con =false ;elseMyStack.Pop(
13、);MyInputstack.Pop();this .MyOutput_listBox3.Items.Add( );#endregion#region 返回狀態(tài)棧棧頂元素在非終結(jié)符數(shù)組里的下標(biāo)public bool MyStackTopThree( string stack)bool symbol = false ;for ( int i = 0; i unTerm.Length; i+)if (unTermi = stack)line = i;symbol =true ;break ;return symbol;#endregion#region 返回輸入棧棧頂元素在終結(jié)符數(shù)組里的下標(biāo)pri
14、vate bool MyInputStackTopOne( string myinput)bool symbol = false ;for ( int i = 0; i = 0; i-)MyStack.Push(MyNowStringi);#endregion#region “退出”按鈕實(shí)現(xiàn)的函數(shù)private void exit_button2_Click( object sender, EventArgs e) DialogResult ret;ret =MessageBox.Show( 確定要退出嗎? , 退出 ,MessageBoxButtons .OKCancel,MessageBo
15、xIcon .Question,MessageBoxDefaultButton .Button2);if (ret = DialogResult .OK)this .Close();#endregion#region “重置”按鈕實(shí)現(xiàn)的功能private void clear_Button_Click( object sender, EventArgs e) Input_richTextBox1.Clear();Rezult_richTextBox2.Clear();this .MyStack_listBox1.Items.Clear();this .MyInput_listBox2.Items.Clear();this .MyOutput_listBox3.Items.Clear();MyStack.Clear();MyInputstack.Clear();begin.Enabled =true ;nextStep.Ena
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年海洋潛標(biāo)系統(tǒng)合作協(xié)議書
- 如何充分發(fā)揮時(shí)間優(yōu)勢備考信息系統(tǒng)項(xiàng)目管理師試題及答案
- 2025年社交媒體平臺輿情監(jiān)測與危機(jī)公關(guān)輿情處理流程優(yōu)化報(bào)告
- 公共政策對教育公平的實(shí)現(xiàn)路徑探討試題及答案
- 企業(yè)風(fēng)險(xiǎn)預(yù)測模型的構(gòu)建與應(yīng)用
- 機(jī)電工程創(chuàng)新技術(shù)開發(fā)試題及答案
- 項(xiàng)目啟動前的準(zhǔn)備工作試題及答案
- 公共圖書館服務(wù)提升方案評估報(bào)告:2025年圖書館讀者服務(wù)體驗(yàn)優(yōu)化研究
- 公共政策的管理與評估框架試題及答案
- 2025年能源與資源行業(yè)能源系統(tǒng)優(yōu)化配置技術(shù)研究報(bào)告
- 澳大利亞建筑規(guī)范
- 2024年紫金礦業(yè)集團(tuán)股份限公司校園招聘歷年高頻500題難、易錯點(diǎn)模擬試題附帶答案詳解
- 消化道出血護(hù)理查房7
- 太陽能光伏發(fā)電設(shè)備采購合同
- 江蘇省常州市教育學(xué)會2023-2024學(xué)年下學(xué)期八年級數(shù)學(xué)考試卷
- DZ∕T 0214-2020 礦產(chǎn)地質(zhì)勘查規(guī)范 銅、鉛、鋅、銀、鎳、鉬(正式版)
- 2024年新教科版六年級下冊科學(xué)期末綜合測試卷(十九)
- 精神科進(jìn)修匯報(bào)
- 2023年新高考天津卷歷史高考真題解析(參考版)
- 人工智能在文化遺產(chǎn)數(shù)字化保護(hù)中的應(yīng)用
- GB/T 41666.4-2024地下無壓排水管網(wǎng)非開挖修復(fù)用塑料管道系統(tǒng)第4部分:原位固化內(nèi)襯法
評論
0/150
提交評論