




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、計(jì)算機(jī)與信息學(xué)院 編譯原理課程設(shè)計(jì) 實(shí)驗(yàn)報(bào)告專 業(yè) 班 級(jí) 學(xué)生姓名及學(xué)號(hào) 課程教學(xué)班號(hào) 任 課 教 師 實(shí)驗(yàn)指導(dǎo)教師 實(shí)驗(yàn)地點(diǎn) 學(xué)年第 學(xué)期設(shè)計(jì)目的及要求: 集合LASTVT(P)構(gòu)造算法的程序?qū)崿F(xiàn)設(shè)計(jì)內(nèi)容及要求:構(gòu)造一程序,實(shí)現(xiàn)教材P.91的LASTVT(P)集合的構(gòu)造算法。對(duì)任一給定的算符文法G,程序輸出所有非終結(jié)符P的LASTVT(P)。設(shè)計(jì)內(nèi)容:實(shí)現(xiàn)教材上的算法,對(duì)于任意給定的算符文法,輸出算符文法中所有的非終結(jié)符P的LASTV(P);主要算法描述: 對(duì)于輸入的文法,使用一個(gè)char型二維數(shù)組進(jìn)行存儲(chǔ),依次對(duì)每個(gè)非終結(jié)符求LASTVT集。輸入輸出形式: 輸入: 程序運(yùn)行后從控制臺(tái)輸入
2、算符文法,要指定輸入的文法規(guī)則數(shù)目,且形式與教材文法相同。 輸出:在控制臺(tái)輸出每個(gè)非終結(jié)符的LASTVT集,且將帶有|的文法轉(zhuǎn)換成多個(gè)文法??偨Y(jié): 本次課程設(shè)計(jì)我借鑒了第四學(xué)期編譯原理課程的課程實(shí)驗(yàn),通過(guò)本次課程設(shè)計(jì)我對(duì)編譯原理課程的相關(guān)內(nèi)容有了復(fù)習(xí)和鞏固,對(duì)當(dāng)時(shí)沒(méi)有弄清楚的問(wèn)題有了更深的認(rèn)識(shí),更加掌握了LASTVT集的生成原理,幫助我更好地理解了算符優(yōu)先分析算法。程序運(yùn)行結(jié)果:程序源碼:#include <stdio.h>#include <stdlib.h>#include <iostream>using namespace std;char lable
3、20; /文法終極符集char String2010; /用于輸入串的分析int r; /文法規(guī)則個(gè)數(shù)int r1; /轉(zhuǎn)化后文法規(guī)則個(gè)數(shù)char st1030; /用來(lái)存儲(chǔ)文法規(guī)則char last1010; /文法非終結(jié)符LASTVT集int lflag10 = 0 ; /標(biāo)志第i個(gè)非終結(jié)符的LASTVT集是否已求出/判斷是否是終結(jié)符int zhongjie(char c) /判斷字符c是否是終極符int i;for (i = 0; lablei != '0' i+)if (c = lablei)return 1;return 0;/求lastvt集void lastvt(
4、char c) /求LASTVT集int i, j, k, m, n;for (i = 0; i<r; i+)if (sti0 = c)break;if (lflagi = 0)n = lasti0 + 1;m = 0;doif (stim + 1 = '0' | stim + 1 = '|')if (zhongjie(stim)lastin = stim;n+;elseif (zhongjie(stim - 1)lastin = stim - 1;n+;if (stim != c)lastvt(stim);for (j = 0; j<r; j+)i
5、f (stj0 = stim)break;for (k = 0; k<lastj0; k+)int t;for (t = 0; t<n; t+)if (lastit = lastjk + 1)break;if (t = n)lastin = lastjk + 1;n+;m+; while (stim != '0');lastin = '0'lasti0 = -n;lflagi = 1;/轉(zhuǎn)換 “|”void transform() / 轉(zhuǎn)換 帶"|"的文法 char text2010;int i, j, l, x = 0, y =
6、 0;x = 0;for (i = 0; i<r; i+)textxy = sti0;y+;for (j = 1; stij != '0' j+)if (stij = '|')textxy = '0'x+;y = 0;textxy = sti0;y+;textxy+ = '-'textxy+ = '>'elsetextxy = stij;y+;textxy = '0'x+;y = 0;r1 = x;printf("轉(zhuǎn)化后的文法為:n");for (i = 0; i&l
7、t;x; i+) /輸出轉(zhuǎn)化后的文法規(guī)則串printf("%sn", texti);for (i = 0; i<x; i+) /*求每個(gè)終結(jié)符的推導(dǎo)結(jié)果(去掉"->" 后的轉(zhuǎn)化文法)*/Stringi0 = texti0;for (j = 3, l = 1; textij != '0' j+, l+)Stringil = textij;Stringil = '0'/每個(gè)非終結(jié)符求lastvtvoid table2()for (int i = 0; i<r; i+)lastvt(sti0);/判斷輸入是文法
8、是否規(guī)范void judge()int i, j, k = 0;printf("請(qǐng)輸入文法規(guī)則數(shù):");scanf("%d", &r);printf("請(qǐng)輸入文法規(guī)則:n");for (i = 0; i<r; i+)scanf("%s", sti); /存儲(chǔ)文法規(guī)則,初始化LASTVT集*/ /*lasti0表示LASTVT集中元素的個(gè)數(shù)*/lasti0 = 0;for (i = 0; i<r; i+) /判斷文法是否合法for (j = 0; stij != '0' j+)if
9、 (sti0<'A' | sti0>'Z')printf("不是算符文法!n");exit(-1);if (stij >= 'A'&&stij <= 'Z')if (stij + 1 >= 'A'&&stij + 1 <= 'Z')printf("不是算符文法!n");exit(-1);for (i = 0; i<r; i+)for (j = 0; stij != '0'
10、 j+)if (stij<'A' | stij>'Z') && stij != '-'&&stij != '>'&&stij != '|')lablek+ = stij;/輸出結(jié)果void output()int i = 0, j = 0;printf("每個(gè)非終結(jié)符的LASTVT集為:n"); /輸出每個(gè)非終結(jié)符的LASTVT集for (i = 0; i<r; i+)printf("%c: ", sti0);for (j = 0; j<lasti0; j+)printf("%c ", lastij + 1);printf("n");/數(shù)組初始化 下一次使用void initalize()memset(lable, 0, sizeof(lable);memset(String, 0, sizeof(String);
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 醫(yī)療用品行業(yè)市場(chǎng)準(zhǔn)入政策考核試卷
- 光纜行業(yè)供應(yīng)鏈管理考核試卷
- 成人高等教育材料力學(xué)與工程應(yīng)用考核試卷
- 壓力敏感合成材料制造技術(shù)與應(yīng)用考核試卷
- 機(jī)織服裝國(guó)際貿(mào)易法規(guī)與慣例考核試卷
- 數(shù)字內(nèi)容版權(quán)監(jiān)測(cè)與維權(quán)策略考核試卷
- 青島沃爾沃購(gòu)車(chē)合同范本
- 中介渠道合作合同范本
- 藝人標(biāo)準(zhǔn)解約合同范本
- 酒店訂制家具合同范本
- GB/T 1346-2024水泥標(biāo)準(zhǔn)稠度用水量、凝結(jié)時(shí)間與安定性檢驗(yàn)方法
- 2025年江蘇信息職業(yè)技術(shù)學(xué)院高職單招職業(yè)適應(yīng)性測(cè)試近5年??及鎱⒖碱}庫(kù)含答案解析
- 易制毒化學(xué)品理論考試試題及答案
- 2024年煙臺(tái)汽車(chē)工程職業(yè)學(xué)院高職單招職業(yè)適應(yīng)性測(cè)試歷年參考題庫(kù)含答案解析
- 2024年江西旅游商貿(mào)職業(yè)學(xué)院高職單招語(yǔ)文歷年參考題庫(kù)含答案解析
- IIT臨床醫(yī)學(xué)項(xiàng)目管理
- 藥品網(wǎng)絡(luò)交易服務(wù)三方平臺(tái)質(zhì)量管理體系文件-B2B平臺(tái)(完整版)
- 《森林調(diào)查技術(shù)》課件(上)
- 環(huán)衛(wèi)車(chē)輛操作及維護(hù)培訓(xùn)方案
- 醫(yī)療器械質(zhì)量負(fù)責(zé)人崗位職責(zé)
- 湘陰縣易聚餐飲有限公司部門(mén)備用金業(yè)務(wù)財(cái)務(wù)融合流程設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論