版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、班級管理系統(tǒng)需求分析項(xiàng)目負(fù)責(zé)人:朱革嬌 汪思源 于彩鳳 丁 娟蘇烽嬌 黃 翦 向 歡 濮湘華 目錄 TOC o 1-3 h z u HYPERLINK l _Toc383532306 1. 引言 PAGEREF _Toc383532306 h 3 HYPERLINK l _Toc383532307 1.1 編寫目的 PAGEREF _Toc383532307 h 3 HYPERLINK l _Toc383532308 1.2 預(yù)期讀者和閱讀建議 PAGEREF _Toc383532308 h 3 HYPERLINK l _Toc383532309 1.3 產(chǎn)品范圍 PAGEREF _Toc38
2、3532309 h 4 HYPERLINK l _Toc383532310 1.4 參考文獻(xiàn) PAGEREF _Toc383532310 h 4 HYPERLINK l _Toc383532311 1.5 運(yùn)行環(huán)境 PAGEREF _Toc383532311 h 4 HYPERLINK l _Toc383532312 1.6 設(shè)計(jì)和實(shí)現(xiàn)上的限制 PAGEREF _Toc383532312 h 5 HYPERLINK l _Toc383532313 2. 用戶需求分析和可行性分析 PAGEREF _Toc383532313 h 5 HYPERLINK l _Toc383532314 2.1 用戶
3、需求分析 PAGEREF _Toc383532314 h 5 HYPERLINK l _Toc383532315 2.2 可行性分析 PAGEREF _Toc383532315 h 5 HYPERLINK l _Toc383532316 3. 功能需求分析 PAGEREF _Toc383532316 h 6 HYPERLINK l _Toc383532317 3.1 用戶登權(quán)限 PAGEREF _Toc383532317 h 6 HYPERLINK l _Toc383532318 3.2 信息 PAGEREF _Toc383532318 h 7 HYPERLINK l _Toc38353231
4、9 3.3 功能簡圖 PAGEREF _Toc383532319 h 8 HYPERLINK l _Toc383532320 3.4 輸入輸出數(shù)據(jù) PAGEREF _Toc383532320 h 8 HYPERLINK l _Toc383532321 3.5 數(shù)據(jù)字典 PAGEREF _Toc383532321 h 11 HYPERLINK l _Toc383532322 4. 網(wǎng)站特色 PAGEREF _Toc383532322 h 14 HYPERLINK l _Toc383532323 4.1 實(shí)用的功能設(shè)計(jì) PAGEREF _Toc383532323 h 14 HYPERLINK l
5、_Toc383532324 4.2 網(wǎng)站主要功能描述 PAGEREF _Toc383532324 h 14 HYPERLINK l _Toc383532325 5. 數(shù)據(jù)庫設(shè)計(jì) PAGEREF _Toc383532325 h 15 HYPERLINK l _Toc383532326 5.1 E-R圖 PAGEREF _Toc383532326 h 15 HYPERLINK l _Toc383532327 5.2 建表: PAGEREF _Toc383532327 h 16 HYPERLINK l _Toc383532328 6. 窗體設(shè)計(jì)與功能顯示 PAGEREF _Toc383532328
6、h 17 HYPERLINK l _Toc383532329 7. 任務(wù)分工 PAGEREF _Toc383532329 h 17 HYPERLINK l _Toc383532330 8. 附錄 PAGEREF _Toc383532330 h 19引言隨著學(xué)校教育改革的不斷深入,學(xué)校招生規(guī)模不斷擴(kuò)大,班級管理工作變得越來越繁重,對于以前用紙筆記錄的時代,已不再能滿足要求(網(wǎng)絡(luò)可以便方面查詢信息、了解各班的動態(tài)以便更好的相互促進(jìn))。有效的班級管理系統(tǒng)對整個學(xué)校的教育工作變得至關(guān)重要,這不僅是學(xué)校高質(zhì)量人才培養(yǎng)的堅(jiān)強(qiáng)后盾,也是學(xué)校正常教學(xué)秩序的保障和教學(xué)質(zhì)量的保證,對學(xué)校的人才培養(yǎng)十分重要。傳統(tǒng)的
7、C/S和B/S系統(tǒng)結(jié)構(gòu)的班級管理方法、方式以及工作效率已不能滿足新的發(fā)展需要。只有運(yùn)用先進(jìn)的技術(shù)手段,開發(fā)基于新技術(shù)的學(xué)校班級管理信息系統(tǒng),才能滿足校內(nèi)外對班級信息共享和利用的要求。編寫目的完成了“班級管理系統(tǒng)”軟件的需求調(diào)查后,對問卷進(jìn)行了全面深入地探討和分析,進(jìn)行了“班級管理系統(tǒng)”軟件需求分析的撰寫。它包括全面細(xì)致的用戶需求分析,明確所要開發(fā)的軟件應(yīng)具有的功能、性能,使系統(tǒng)分析人員及軟件開發(fā)人員能清楚地了解用戶的需求,班級開發(fā)一個“班級管理系統(tǒng)”,目標(biāo)是建立及時、準(zhǔn)確、全面、豐富的班級成績信息管理平臺。系統(tǒng)針對班級管理的實(shí)際,緊貼用戶需求,全面覆蓋班級管理各個方面,提高管理水平、質(zhì)量、效率
8、,為班級建立一個良好的管理平臺。預(yù)期讀者和閱讀建議用戶;開發(fā)人員;項(xiàng)目經(jīng)理;營銷人員;測試人員;文檔編寫人員。產(chǎn)品范圍學(xué)校招生規(guī)模不斷擴(kuò)大,班級管理工作變得越來越繁重,對于以前用紙筆記錄的時代,已不再能滿足要求(網(wǎng)絡(luò)可以便方面查詢信息、了解各班的動態(tài)以便更好的相互促進(jìn))。有效的班級管理系統(tǒng)對整個學(xué)校的教育工作變得至關(guān)重要。只有運(yùn)用先進(jìn)的技術(shù)手段,開發(fā)基于新技術(shù)的學(xué)校班級管理信息系統(tǒng),才能滿足校內(nèi)外對班級信息共享和利用的要求。參考文獻(xiàn)Software Engineering (IAN Sommerville),配置管理原理與實(shí)踐(Anne Mette Jonassen Hass個體軟件開發(fā)過程,
9、Watts S. Humphrey 著,人民郵電出版社,2001年10月。軟件工程理論與實(shí)踐(影印版),Shari Lawrence Pfleeger,高等教育出版社,2001年6月。軟件創(chuàng)新之路 - 沖破高技術(shù)營造的牢籠,英文原書名 : The inmates are running the asylum , A lan Cooper 著,翻譯 : 劉瑞挺 劉強(qiáng) 程巖,電子工業(yè)出版社, 2001 。介紹:這不是一本教你如何編程的 書,但卻是軟件工程師不可不讀的書。本書作者 Cooper 被譽(yù)為“ VB 之父”。他針對基于電腦的產(chǎn) 品難學(xué)、難用、難以理解的弊病,提出了軟件設(shè)計(jì)應(yīng)分為兩部分:交互
10、設(shè)計(jì)與編碼設(shè)計(jì)。本書通過 大量的商務(wù)案例,“透徹地描述了我們面臨的挑戰(zhàn),并從方法學(xué)上提供了逃離我們自己熱心營造的 技術(shù)牢籠的指南?!?軟件工程實(shí)踐者之路(第五版,影?。?, Roger S. Pressman ,清華大學(xué)出版社, 2001 。運(yùn)行環(huán)境硬件平臺:486或更高檔的PC臺式機(jī),筆記本電腦運(yùn)用時占用內(nèi)存:2MB;安裝所需硬盤:6MB;打印機(jī):可選。操作系統(tǒng):window XP,win7,win8等等;設(shè)計(jì)和實(shí)現(xiàn)上的限制軟件設(shè)計(jì),思路不夠清晰,可能延誤期限人力資源有限數(shù)據(jù)庫:MySQL-Front、Microsoft SQL Server 2008 R2、Microsoft SQL Ser
11、ver 2005工具:java、div-css、html、jsp、struts2.0、hibernate、spring等等??臻g、服務(wù)器申請有一定困難。用戶需求分析和可行性分析用戶需求分析隨著信息化的來臨和計(jì)算機(jī)在日常管理中的廣泛應(yīng)用,為了實(shí)現(xiàn)班級管理的信息化和方便化,建立一套功能完善的管理信息系統(tǒng)勢在必行。既能滿足管理人員日常處理的需要,增強(qiáng)班級管理數(shù)字化管理水平,提高實(shí)施管理的準(zhǔn)確性、科學(xué)性,使擔(dān)負(fù)管理的工作人員從繁雜的手工勞作中解脫出來,從而大幅度提高工作效率;又能滿足同學(xué)們彼此了解的需求,而且還可以更好的向其他想了解本班情況的用戶提供大量的數(shù)據(jù)以及文字信息可行性分析為了進(jìn)一步幫助班委進(jìn)
12、行科學(xué)有效的學(xué)生管理工作,現(xiàn)通過對部分用戶的調(diào)查了解,對建立班級管理信息系統(tǒng)進(jìn)行了以下幾方面的可行性分析:必要性:隨著同學(xué)們在校時間的增加,越來越多的數(shù)據(jù)需要被記錄,班干部的管理工作也日趨復(fù)雜化,原來的僅靠手工進(jìn)行的班級管理已日漸顯示出其不足之處,那么就有必要建立一套基于計(jì)算機(jī)的班級管理信息系統(tǒng)??尚行裕簱?jù)了解,各班委都已具有基本的硬件設(shè)備,那么這就為班級管理信息系統(tǒng)的實(shí)行提供了必要的可行性;加之相關(guān)用戶都已具備了一定計(jì)算機(jī)基本操作能力,所以這又為班級管理信息系統(tǒng)的實(shí)行提供了用戶方面的可能性;再從資金成本等方面講,因?yàn)樵撓到y(tǒng)相對而言只是一個小型的管理系統(tǒng)僅供班級管理需要,所需消耗費(fèi)也是很少的。
13、綜合上述幾方面,班級管理信息系統(tǒng)的建立具有很大的可行性。有益性,班級管理信息系統(tǒng)一旦建成,那么通過該系統(tǒng)的使用就可以提高信息的使用質(zhì)量,提高數(shù)據(jù)的準(zhǔn)確性,減輕用戶的工作負(fù)擔(dān)和勞動強(qiáng)度,提高用戶的信息處理能力,從而進(jìn)行有效的決策與管理。總之,通過以上幾方面的可行性分析,本開發(fā)成員認(rèn)為建立一套班級管理信息系統(tǒng)是可行的。通過掌握和調(diào)查的相關(guān)原始資料,就可以對該系統(tǒng)的開發(fā)做出相關(guān)的計(jì)劃進(jìn)度,著手進(jìn)行系統(tǒng)的分析和設(shè)計(jì)工作。功能需求分析用戶登權(quán)限 用戶登錄分為學(xué)生、班級管理員、教師(輔導(dǎo)員)登陸。學(xué)生身份(普通學(xué)生):班級成員查詢學(xué)生信息(學(xué)號、姓名、性別、民族、家庭住址、職位、年齡等等)開放系統(tǒng)有成員查
14、詢課程信息。班級成員查詢成績(綜合排名、學(xué)期排名)班級成員查詢班干信息。班級成員查詢班級班費(fèi)支出信息。班級成員查詢班級事件信息。發(fā)布作業(yè)。班級各個成員處的賬號和密碼,并可以自行修改各自的賬號和密碼。 學(xué)生身份(班級管理員) 普通學(xué)生所有權(quán)限。 查詢整個系統(tǒng)的班干信息。成員的俱基本 修改、刪除、查詢、添加班級各個成員基本信息。 修改、刪除、查詢、添加班級各個成員的成績信息。 修改、刪除、查詢、添加班級各個班干基本信息。 修改、刪除、查詢、添加班級各個班級課程信息。 修改、刪除、查詢、添加班級班費(fèi)支出基本信息。 修改、刪除、查詢、添加班級事件信息。 擁有自己的賬號和密碼,并可自行修改自己的賬號和密
15、碼。 教師(輔導(dǎo)員): 擁有普通用戶權(quán)限。 修改、刪除、查詢、添加通知。信息學(xué)生基本信息:學(xué)號、姓名、性別、身份證號、專業(yè)、年級、班級等等。班干信息:記錄 著整個班的班級班干信息。課程信息:課程編號、課程名、任課教師、學(xué)分。成績信息:學(xué)號 、姓名、班級、各科成績、總分、平均分、班級排名、綜合排名。用戶信息(系統(tǒng)信息):用戶權(quán)限、用戶身份、用戶名、用戶密碼。班級事件信息:記錄班級事件,事件日期、事件內(nèi)容。班費(fèi)支出信息:記錄班費(fèi)支出信息,支出日期、支出內(nèi)容、支出金額。通知信息:由輔導(dǎo)員發(fā)出的通知。功能簡圖 輸入輸出數(shù)據(jù)班級管理員:普通學(xué)生:老師(主要輔導(dǎo)員): 數(shù)據(jù)字典班級管理系統(tǒng)學(xué)生信息學(xué)生信息
16、學(xué)生信息老師班級管理員普通學(xué)生查詢修改、添加、刪除、查詢 查詢班級管理系統(tǒng)成績信息成績信息成績信息老師班級管理員普通學(xué)生查詢修改、添加、刪除、查詢 查詢班級管理系統(tǒng)班干信息班干信息班干信息老師班級管理員普通學(xué)生查詢修改、添加、刪除、查詢 查詢班級管理系統(tǒng)課程信息課程信息課程信息老師班級管理員普通學(xué)生查詢修改、添加、刪除、查詢 查詢班級管理系統(tǒng)通知信息通知信息通知信息老師班級管理員普通學(xué)生修改、添加、刪除查詢查詢 查詢班級管理系統(tǒng)班費(fèi)支出信息班費(fèi)支出班費(fèi)支出老師班級管理員普通學(xué)生查詢修改、添加、刪除、查詢 查詢班級管理系統(tǒng)班級事件信息班級事件班級事件老師班級管理員普通學(xué)生查詢修改、添加、刪除、查
17、詢 查詢網(wǎng)站特色實(shí)用的功能設(shè)計(jì)(1)強(qiáng)大的交流功能(2)美觀的界面設(shè)計(jì)(3)豐富的互動內(nèi)容網(wǎng)站主要功能描述班級交流平臺(CCP)是以班級為中心的實(shí)名制社交網(wǎng)站,它提供了強(qiáng)大的交流分享功能,可以幫助你與同班同學(xué)保持更緊密的聯(lián)系。在這里,你可以寫日志、傳照片,與好友分享生活點(diǎn)滴,以小組為單位進(jìn)行各項(xiàng)學(xué)習(xí),與同學(xué)分享你的資源,同時還可以為班級的榮譽(yù)以及活動投上你神圣的一票。班級交流平臺共分為:個人主頁、投票、小組、論壇、資源共享五個功能模塊,每個功能模塊都以用戶所在的班級為中心進(jìn)行交流分享。個人主頁模塊包括新鮮事、日志、相冊、好友、留言、發(fā)狀態(tài)這些功能。投票模塊包括最新投票、我參與過的投票、我發(fā)起的
18、投票。小組模塊包括我的小組、新成立的小組、建立小組申請。論壇模塊包括發(fā)帖、瀏覽帖子、帖子列表。資源共享模塊包括資源列表、資源上傳、資源下載。數(shù)據(jù)庫設(shè)計(jì)E-R圖建表:表名主鍵其他屬性Table_loginusernamepwdusertypepictureLast_timeTable_diaryidTitlecontentaddtimeusernameTable_pictureidusernametitlesourceTable_voteidtitleselusernameaddtimeendtimeTable_forumidtitlecontentusernameaddtimeTable_re
19、plyNum(自動編號)idcontentusernameaddtimeTable_resourcesidtitlesourceusernameaddtime窗體設(shè)計(jì)與功能顯示任務(wù)分工本次網(wǎng)站設(shè)計(jì)我們采用模塊化、并行開發(fā)的策略。以下是我們的小組分工:總負(fù)責(zé)人:汪思源美工組任務(wù)分工汪思源負(fù)責(zé)各頁面設(shè)計(jì)需負(fù)責(zé)登錄模塊投票模塊的程序界面顏色設(shè)計(jì)丁娟Logo設(shè)計(jì)蘇烽嬌需求分析技術(shù)組任務(wù)分工朱革嬌個人主頁小組模塊濮湘華、黃翦論論壇模塊系統(tǒng)設(shè)計(jì)于彩鳳、向歡資源共享模塊、數(shù)據(jù)庫設(shè)計(jì)時間美工組任務(wù)技術(shù)組任務(wù)總體目標(biāo)4月24日確定網(wǎng)站整體顏色標(biāo)語logo網(wǎng)站架構(gòu)圖網(wǎng)站進(jìn)度表數(shù)據(jù)庫設(shè)計(jì)5月1日登錄界面的實(shí)現(xiàn)(暫不
20、考慮管理員)主頁的設(shè)計(jì),拿出效果圖做好公共模塊的程序如global.asa常用頭文件等主頁編程實(shí)現(xiàn)5月8日相冊,日志界面設(shè)計(jì)(相冊最好用flash技術(shù)實(shí)現(xiàn)較精致效果)好友管理實(shí)現(xiàn)個人主頁模塊的各功能編程個人主頁各功能完善5月15日投票頁面設(shè)計(jì)以及投票模塊編程協(xié)助投票模塊的實(shí)現(xiàn)同時進(jìn)行論壇編程投票,論壇實(shí)現(xiàn)5月22日資源共享頁面設(shè)計(jì)資源共享的編程資源共享模塊實(shí)現(xiàn)5月29日小組模塊頁面設(shè)計(jì)小組模塊的編程小組模塊實(shí)現(xiàn)6月5日完善,作品介紹等完善勝利!附錄班級網(wǎng)站建設(shè)調(diào)查問卷你的身份是?學(xué)生老師你希望你的班級有一個屬于你們自己的獨(dú)立網(wǎng)站嗎?非常希望希望無所謂你最喜歡的班級網(wǎng)站的主題顏色是?天藍(lán)色黃綠色
21、淡紫色紅色其他請按你認(rèn)為的班級網(wǎng)站功能的重要程度排序【請選擇1-5項(xiàng)并排序】上傳下載共享文件分享交流查詢班級公共信息發(fā)布分享班級活動班級相冊 你認(rèn)為你的班級建設(shè)哪種班級網(wǎng)站?【多選題】大學(xué)生專業(yè)學(xué)習(xí)網(wǎng)站大學(xué)生職業(yè)生涯規(guī)劃大學(xué)生校園生活大學(xué)生分享交流網(wǎng)站你認(rèn)為要如何布局設(shè)計(jì)整個網(wǎng)頁版面?井字型 T字型三型/梯狀型“口”型影響你瀏覽班級網(wǎng)站的因素【多選題】網(wǎng)站的界面簡介度網(wǎng)站的導(dǎo)航功能網(wǎng)站的整體配色網(wǎng)站的圖文排放其他 你希望班級網(wǎng)站里有哪方面的導(dǎo)航?【多選題】班級風(fēng)采班級活動班級論壇信息導(dǎo)航互幫互助班級相冊其他 你認(rèn)為一個班級網(wǎng)站需要哪些部分?【多選題】線性結(jié)構(gòu)樹狀鏈接結(jié)構(gòu)你認(rèn)為班級網(wǎng)站是否需要分
22、學(xué)習(xí)專區(qū)?例如:英語專區(qū)、專業(yè)課程專區(qū)等等。需要不需要你是否認(rèn)為學(xué)習(xí)網(wǎng)站有必要建立一個定期的在校師生交流專區(qū)?是否你希望你們班級的網(wǎng)站建立一個怎樣的師生交流平臺?老師1小時在線回答學(xué)生問題公共郵箱手法郵件方式學(xué)生約老師的方式老師與學(xué)生以論壇的方式交流你認(rèn)為怎樣的班級網(wǎng)站才能吸引你去瀏覽?【多選題】有豐富的學(xué)習(xí)資訊有有趣的業(yè)余活動有共同的討論平臺其他 你覺得班級網(wǎng)站是否應(yīng)該及時地回復(fù)用戶的建議?應(yīng)該可以延遲回答你覺得班級網(wǎng)站需要提供更多的?【多選題】分享經(jīng)典視頻圖片文檔等資料班級新聞其他16.你對建立一個好的班級網(wǎng)站有什么其他好的意見或建議附錄資料:不需要的可以自行刪除C語言編譯器的設(shè)計(jì)與實(shí)現(xiàn)
23、我們設(shè)計(jì)的編譯程序涉及到編譯五個階段中的三個,即詞法分析器、語法分析器和中間代碼生成器。編譯程序的輸出結(jié)果包括詞法分析后的二元式序列、變量名表、狀態(tài)棧分析過程顯示及四元式序列程序,整個編譯程序分為三部分:(1) 詞法分析部分(2) 語法分析處理及四元式生成部分 (3) 輸出顯示部分一詞法分析器設(shè)計(jì) 由于我們規(guī)定的程序語句中涉及單詞較少,故在詞法分析階段忽略了單詞輸入錯誤的檢查,而將編譯程序的重點(diǎn)放在中間代碼生成階段。詞法分析器的功能是輸入源程序,輸出單詞符號。我們規(guī)定輸出的單詞符號格式為如下的二元式: (單詞種別,單詞自身的值)#define ACC -2#define syl_if 0#de
24、fine syl_else 1#define syl_while 2#define syl_begin 3#define syl_end 4#define a 5#define semicolon 6#define e 7#define jinghao 8#define s 9#define L 10#define tempsy 11#define EA 12#define EO 13#define plus 14#define times 15#define becomes 16#define op_and 17#define op_or 18#define op_not 19#define
25、 rop 20#define lparent 21#define rparent 22#define ident 23#define intconst 24函數(shù)說明 讀取函數(shù) readline( )、readch( )詞法分析包含從源文件讀取字符的操作,但頻繁的讀文件操作會影響程序執(zhí)行效率,故實(shí)際上是從源程序文件” source.dat ”中讀取一行到輸入緩沖區(qū),而詞法分析過程中每次讀取一個字符時則是通過執(zhí)行 readch( )從輸入緩沖區(qū)獲得的;若緩沖區(qū)已被讀空,則再執(zhí)行readline( )從 source.dat 中讀取下一行至輸入緩沖區(qū)。掃描函數(shù) scan( ) 掃描函數(shù) scan(
26、)的功能是濾除多余空格并對主要單詞進(jìn)行分析處理,將分析得到的二元式存入二元式結(jié)果緩沖區(qū)。變量處理 find( )變量處理中首先把以字母開頭的字母數(shù)字串存到 spelling 數(shù)組中,然后進(jìn)行識別。識別過程是先讓它與保留關(guān)鍵字表中的所有關(guān)鍵字進(jìn)行匹配,若獲得成功則說明它為保留關(guān)鍵字,即將其內(nèi)碼值寫入二元式結(jié)果緩沖區(qū);否則說明其為變量,這時讓它與變量名表中的變量進(jìn)行匹配( 變量匹配函數(shù) find( ) ),如果成功,則說明該變量已存在并在二元式結(jié)果緩沖區(qū)中標(biāo)記為此變量( 值填為該變量在變量名表中的位置),否則將該變量登記到變量名表中,再將這個新變量存入二元式緩存數(shù)組中。數(shù)字識別 number( )
27、 數(shù)字識別將識別出的數(shù)字填入二元式結(jié)果緩存數(shù)組。顯示函數(shù) 顯示函數(shù)的功能在屏幕上輸出詞法分析的結(jié)果( 即二元式序列程序),同時給出二元式個數(shù)及源程序行數(shù)統(tǒng)計(jì)。二語法分析器設(shè)計(jì) 語法分析器的核心是三張 SLR 分析表以及針對這三張 SLR 分析表進(jìn)行語義加工的語義動作。編譯程序中語法分析處理及四元式生成部分主要是以二元式作為輸入,并通過 SLR 分析表對語法分析處理過程進(jìn)行控制,使四元式翻譯的工作有條不紊的進(jìn)行,同時識別語法分析中的語法錯誤。在處理 if 和 while 語句時,需要進(jìn)行真值或假值的拉鏈和返填工作,以便轉(zhuǎn)移目標(biāo)的正確填入。1. 控制語句的 SLR 分析表1 設(shè)計(jì)過程如下: 將擴(kuò)展
28、文法GS S1)S if e S else S2)S while e S3)S L 4)S a;5)L S6)L SL用_CLOSURE方法構(gòu)造LR(0)項(xiàng)目規(guī)范簇為:I0: S SS if e S else SS while e S S L S a ;I1: S SI2: S ife S else SI3: S while e SI4: S L L S L SL S if e S else SS while e S S L S a ; I5: S a; I6: S if e S else S S if e S else SS while e S S L S a ; I7: S while e
29、 S S if e S else SS while e S S L S a ; I8: S L I9: L S L SL L SL L S S if e S else SS while e S S L S a ; I10: S a ; I11: S if e S else SI12: S while e S I13: S L I14: S SL I15: S if e S else S S if e S else SS while e S S L S a ; I16: S if e S else S 構(gòu)造文法G中非終結(jié)符的FOLLOW集如下:FOLLOW(S) = # S if e S els
30、e S得FOLLOW(S) = else S L 得FOLLOW(L) = 3) S S 得FOLLOW(S) = else , # L S 因?yàn)镕IRST(S) = ,所以FOLLOW(S) = else , #, 在()項(xiàng)目規(guī)范簇中,只有9有“移進(jìn)歸約”沖突,L SL SL因?yàn)镕OLLOW(L) FIRST(L) = 所以可以用方法解決以上沖突,最后我們得到的分析表如下:ACTIONGOTO ifElsewhilea;e#SL0S2S3S4S511ACC2S63S74S2S3S4S5985S106S2S3S4S5117S2S3S4S5128S139S2S3S4R5S591410R4R4R4
31、111512R2R2R213R3R3R314R615S2S3S4S51616R1R1R1static int action2011=/* 0 */ 2, -1, 3, 4, -1, 5, -1, -1, -1, 1, -1,/* 1 */ -1, -1, -1, -1, -1, -1, -1, -1,ACC, -1, -1,/* 2 */ -1, -1, -1, -1, -1, -1, -1, 6, -1, -1, -1,/* 3 */ -1, -1, -1, -1, -1, -1, -1, 7, -1, -1, -1,/* 4 */ 2, -1, 3, 4, -1, 5, -1, -1, -
32、1, 9, 8,/* 5 */ -1, -1, -1, -1, -1, -1, 10, -1, -1, -1, -1,/* 6 */ 2, -1, 3, 4, -1, 5, -1, -1, -1, 11, -1,/* 7 */ 2, -1, 3, 4, -1, 5, -1, -1, -1, 12, -1,/* 8 */ -1, -1, -1, -1, 13, -1, -1, -1, -1, -1, -1,/* 9 */ 2, -1, 3, 4,105, 5, -1, -1, -1, 9, 14,/* 10*/ -1,104, -1, -1,104, -1, -1, -1,104, -1, -1
33、,/* 11*/ -1, 15, -1, -1, -1, -1, -1, -1, -1, -1, -1,/* 12*/ -1,102, -1, -1,102, -1, -1, -1,102, -1, -1,/* 13*/ -1,103, -1, -1,103, -1, -1, -1,103, -1, -1,/* 14*/ -1, -1, -1, -1,106, -1, -1, -1, -1, -1, -1,/* 15*/ 2, -1, 3, 4, -1, 5, -1, -1, -1, 16, -1,/* 16*/ -1,101, -1, -1,101, -1, -1, -1,101, -1,
34、-1;其中,前 9 列為 action 值,后 2 列為 goto 值;016 表示 17 個移進(jìn)狀態(tài)( 即 Si);-1表示出錯;ACC 表示分析成功;而 100106 對應(yīng) 7 個歸約產(chǎn)生式:S SS if e S else SS while e SS L S a;L SL SL2. 算術(shù)表達(dá)式的 LR 分析表 2 設(shè)計(jì)如下:S EE E+EE E*EE (E)E i (過程略)ACTIONGOTOI+*()#E0S3S211S4S5ACC2S3S263R4R4R4R44S3S275S3S286S4S5S97R1R5R1R18R2R2R2R29R3R3R3R3static int acti
35、on1107=/* 0 */ 3, -1, -1, 2, -1, -1, 1,/* 1 */ -1, 4, 5, -1, -1,ACC, -1,/* 2 */ 3, -1, -1, 2, -1, -1, 6,/* 3 */ -1,104,104, -1,104,104, -1,/* 4 */ 3, -1, -1, 2, -1, -1, 7,/* 5 */ 3, -1, -1, 2, -1, -1, 8,/* 6 */ -1, 4, 5, -1, 9, -1, -1,/* 7 */ -1,101, 5, -1,101,101, -1,/* 8 */ -1,102,102, -1,102,102,
36、 -1,/* 9 */ -1,103,103, -1,103,103, -1;3.布爾表達(dá)式的 SLR 分析表3 設(shè)計(jì)如下:(過程略)S BB iB i rop iB ( B )B ! BA B &B ABO B |B OBACTIONGOTOiRop()!&|#BAO0S1S4S513781S2R1R1R1R12S33R2R2R2R24S1S4S511785S1S4S56786R4S9S10R47S1S4S514788S1S4S515789R5R5R510R7R7R711S12S9S1012R3R3R3R313S9S10ACC14R6S9S10R615R8S9S10R8static int
37、action21611=/* 0 */ 1, -1, 4, -1, 5, -1, -1, -1, 13, 7, 8,/* 1 */ 1, 2, -1,101, -1,101,101,101, -1, -1, -1,/* 2 */ 3, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,/* 3 */ -1, -1, -1,102, -1,102,102,102, -1, -1, -1,/* 4 */ 1, -1, 4, -1, 5, -1, -1, -1, 11, 7, 8,/* 5 */ 1, -1, 4, -1, 5, -1, -1, -1, 6, 7, 8,/
38、* 6 */ -1, -1, -1,104, -1, 9, 10,104, -1, -1, -1,/* 7 */ 1, -1, 4, -1, 5, -1, -1, -1, 14, 7, 8,/* 8 */ 1, -1, 4, -1, 5, -1, -1, -1, 15, 7, 8,/* 9 */ 105, -1,105, -1,105, -1, -1, -1, -1, -1, -1,/*10 */ 107, -1,107, -1,107, -1, -1, -1, -1, -1, -1,/*11 */ -1, -1, -1, 12, -1, 9, 10, -1, -1, -1, -1,/*12
39、*/ -1, -1, -1,103, -1,103,103,103, -1, -1, -1,/*13 */ -1, -1, -1, -1, -1, 9, 10,ACC, -1, -1, -1,/*14 */ -1, -1, -1,106, -1, 9, 10,106, -1, -1, -1,/*15 */ -1, -1, -1,108, -1, 9, 10,108, -1, -1, -1;LR 分析表控制語義加工的實(shí)現(xiàn):當(dāng)掃描 LR 分析表的當(dāng)前狀態(tài)為歸約狀態(tài)時,則在調(diào)用與該狀態(tài)對應(yīng)的產(chǎn)生式進(jìn)行歸約的同時,調(diào)用相應(yīng)的語義子程序進(jìn)行有關(guān)的翻譯工作?,F(xiàn)在對 LR 分析器的分析棧加以擴(kuò)充,使得每個文
40、法符號之后都跟著它的語義值。為了清晰起見,我們把這個棧的每一項(xiàng)看成由三部分組成:狀態(tài) state ,文法符號 syl 和語義值 val。編譯程序?qū)崿F(xiàn)算術(shù)表達(dá)式、布爾表達(dá)式及程序語句的語義加工時,都是按這種狀態(tài)棧加工方式進(jìn)行的。例如:( 5 + 3 ) * 6的分析過程序號STATEValsylinput10-#( 5 + 3 ) * 6 #202-#(5 + 3 ) * 6 #3023#(5+ 3 ) * 6 #4026-5#(E+ 3 ) * 6 #50264-5-#(E+3 ) * 6 #602643-5-#(E+3 ) * 6 #702647-5-3#(E+E) * 6 #8026-8#
41、(E) * 6 #90269-8-#(E)* 6 #1001-8#E* 6 #11015-8-#E* 6 #120153-8-#E*6#130158-8-6#E*E#1401-48#E#15ACC在分析過程中,第(3)步操作后的狀態(tài)棧為 023,根據(jù)棧頂狀態(tài)“ 3”和現(xiàn)行輸入符號“ +”( input 欄字符串的第一個字符)查分析表 ACTION3,+=R4,即按第(4)個產(chǎn)生式 En 來進(jìn)行歸約;由于產(chǎn)生式右部僅含一項(xiàng),故去掉狀態(tài)棧棧頂“3”;此時 2 變?yōu)樾碌臈m敔顟B(tài),再查( 2,E)的下一狀態(tài) s:GOTO2,E=6,即將狀態(tài) 6 和文法符號 E 壓棧,最后得到第( 4)步的狀態(tài)。第(
42、7)步操作后也是如此,當(dāng)前狀態(tài)棧為 02647,根據(jù)棧頂狀態(tài) 7 和現(xiàn)行輸入符號“ )”查分析表 ACTION7,)=R1,即按第(1)個產(chǎn)生式 EE1+E2進(jìn)行歸約;由于產(chǎn)生式右部有三項(xiàng),故去掉狀態(tài)棧棧頂?shù)?647 三項(xiàng);此時 2 變?yōu)樾碌臈m敔顟B(tài),再查( 2,E)的下一狀態(tài) s:GOTO2,E=6,即將狀態(tài) 6 和文法符號 E 壓棧,最后得到第(8)步的狀態(tài)。三中間代碼生成器設(shè)計(jì):布爾表達(dá)式 布爾表達(dá)式在程序語言中有兩個基本作用:一是用作控制語句( 如 if -else 或 while語句)的條件式;二是用于邏輯演算,計(jì)算邏輯值。布爾表達(dá)式是由布爾算符( &、| 、?。┳饔糜诓紶栕兞浚?或
43、常數(shù))或關(guān)系表達(dá)式而形成的。關(guān)系表達(dá)式的形式是 E1 rop E2,其中 rop 是關(guān)系符( 如或),E1和 E2是算術(shù)式。在這里,我們只考慮前面給定文法所產(chǎn)生的布爾表達(dá)式:BB &B | B | B | ! B | (B) | i rop i | i遵照我們的約定,布爾算符的優(yōu)先順序( 從高到低)為:!、&、|,并假定&和|都服從左結(jié)合規(guī)則。所有關(guān)系符的優(yōu)先級都是相同的,而且高于任何布爾算符,低于任何算術(shù)算符,關(guān)系算符不得結(jié)合。表達(dá)式的真、假出口的確定:考慮表達(dá)式 B1 | B2 ,若 B1為真,則立即知道 B 也為真;因此,B1的真出口也就是整個 B 的真出口。若 B1?為假,則 B2必須
44、被計(jì)值,B2的第一個四元式就是 B1的假出口。當(dāng)然,B2的真、假出口也就是整個 B的真、假出口。類似的考慮適用于對 B1 & B2的翻譯,我們將 B1 | B2和 B1 & B2 的翻譯用下圖表示,在自下而上的分析過程中,一個布爾式的真假出口往往不能在產(chǎn)生四元式的同時就填上。我們只好把這種未完成的四元式的地址( 編號)作為 B 的語義值暫存起來,待到整個表達(dá)式的四元式產(chǎn)生完畢之后再來回填這個未填入的轉(zhuǎn)移目標(biāo)。條件語句對條件語句 if e S1 else S2 中的布爾表達(dá)式 e,其作用僅在于控制對 S1和 S2的選擇。因此,作為轉(zhuǎn)移條件的布爾式e,我們可以賦予它兩種“ 出口”:一是“ 真”出T
45、口,出向 S1;一是“ 假”出口,出向 S2。于是,e的代碼F條件語句可以翻譯成如圖的一般形式。非終結(jié)符 e 具有兩項(xiàng)語義值 e _TC 和e_FC,它們分別指出了尚待回填真、S2的代碼假出口的四元式串。e 的“ 真”出口只有在往回掃描到if時才能知道,而它圖 3-2 條件語句的代碼結(jié)構(gòu) 的“ 假”出口則需到處理過 S1并且到達(dá) else 才能明確。這就是說,必須把 e_FC 的值傳下去,以便到達(dá)相應(yīng)的 else時才進(jìn)行回填。另外,當(dāng) S1語句執(zhí)行完時意味著整個 if-else 語句也已執(zhí)行完畢;因此,在 S1的編碼之后應(yīng)產(chǎn)生一條無條件轉(zhuǎn)移指令。這條轉(zhuǎn)移指令將導(dǎo)致程序控制離開整個 if-els
46、e 語句。但是,在完成 S2的翻譯之前,這條無條件轉(zhuǎn)移指令的轉(zhuǎn)移目標(biāo)是不知道的。甚至,在翻譯完 S2之后,這條轉(zhuǎn)移指令的轉(zhuǎn)移目標(biāo)仍無法確定。這種情形是由于語句的嵌套性所引起的。例如下面的語句:if e1 if e2 S1 else S2 else S3 在 S1的代碼之后的那條無條件轉(zhuǎn)移指令不僅應(yīng)跨越 S2而且應(yīng)跨越 S3。這也就是說,轉(zhuǎn)移目標(biāo)的確定和語句所處的環(huán)境密切相關(guān)。條件循環(huán)語句條件循環(huán)語句 while e S 通常被翻譯成圖的代碼結(jié)構(gòu)。布爾式 e 的“ 真”出口出向 S 代碼段的第一個四元式。緊接 S 代碼段之后應(yīng)產(chǎn)生一條轉(zhuǎn)向測試 e 的無條件轉(zhuǎn)移指令。e 的“ 假”出口將導(dǎo)致程序控
47、制離開整個 while 語句。e 的“ 假”出口目標(biāo)即使在整個 while 語句翻譯完之后也未必明確。例如: if e1 while e2 S1 else S2這種情況仍是由于語句的嵌套性引起的。所以,我們只好把它作為語句的語義值 SCHAIN 暫留下來,以便在處理外層語句時再伺機(jī)回填。語法翻譯實(shí)現(xiàn)方法 將上述語法翻譯付諸實(shí)現(xiàn)過程中,我們僅保留了算術(shù)表達(dá)式和布爾表達(dá)式翻譯的文法和語義動作;面對程序語句的翻譯,由于改造后含有較多的非終結(jié)符且語義動作又相對簡單,故仍恢復(fù)為改造之前的程序語句文法。由于總體上構(gòu)造一個 SLR 分析表來實(shí)現(xiàn)語法分析及語義加工將使得所構(gòu)造的 SLR 分析表過大,所以將其分
48、為下面三部分處理:對算術(shù)表達(dá)式單獨(dú)處理,即為算術(shù)表達(dá)式構(gòu)造一個 SLR 分析表,并將賦值語句A=E 與算術(shù)表達(dá)式歸為一類處理,處理之后的賦值語句僅看作為程序語句文法中的一個終結(jié)符 a。對布爾表達(dá)式也單獨(dú)處理,并為其構(gòu)造一個 SLR 分析表,經(jīng) SLR 分析表處理后的布爾表達(dá)式看作為程序語句文法中的一個終結(jié)符 e。程序語句文法此時變?yōu)椋篠 if e S else S | while e S | L | a;L SL | S此時為程序語句構(gòu)造相應(yīng)的 SLR 分析表就簡單多了。前面的程序語句文法中所添加的非終結(jié)符是為了能及時回填有關(guān)四元式轉(zhuǎn)移目標(biāo)而引入的,在取消了這些非終結(jié)符后又如何解決及時回填轉(zhuǎn)移
49、目標(biāo)的問題呢?我們采取的解決方法是增加兩個數(shù)組 labelmark 和 labeltemp 來分別記錄語句嵌套中每一層布爾表達(dá)式( 如果有的話)e 的首地址以及每一層else( 如果有的話)之前的四元式地址( 即無條件轉(zhuǎn)出此層 if 語句的四元式)。也即,對程序語句的翻譯來說:在處理完布爾表達(dá)式 e 后,回填 if 或 while 語句的真值鏈;在歸約完每一個語句 S 之后檢查符號棧,看在 S 之前的文法符號是否 if 或 while,若是則回填假值鏈( 假值入口為語句 S 所對應(yīng)的四元式序列之后;對 if 語句,此時已在該序列之后加入了一條無條件轉(zhuǎn)移的四元式);在 if 語句中,else 前面要加入一個無條件轉(zhuǎn)移的四元式轉(zhuǎn)向 if 語句末尾;在 while語句尾要有一個無條件轉(zhuǎn)移四元式轉(zhuǎn)向 while 語句開頭。四數(shù)據(jù)結(jié)構(gòu)說明 編譯程序中涉及到的數(shù)據(jù)結(jié)構(gòu)說明如下:char ch=0; /*從字符緩沖區(qū)中讀取當(dāng)前字符*/int count=0; /*詞法分析結(jié)果緩沖區(qū)計(jì)數(shù)器*/stati
溫馨提示
- 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五版鍋爐設(shè)備維護(hù)保養(yǎng)與能源審計(jì)合同范本3篇
- 2025版內(nèi)河水路危險(xiǎn)品運(yùn)輸合同及應(yīng)急救援協(xié)議3篇
- 二零二五年度挖機(jī)操作技能競賽贊助合同
- 1 如何合理選擇抗凝藥物
- 二零二五版民房建筑項(xiàng)目施工合同履約監(jiān)督協(xié)議范本4篇
- 2018年稅務(wù)稽查風(fēng)險(xiǎn)防范及企業(yè)應(yīng)對策略
- 2025年度個人房屋買賣價格調(diào)整及支付合同2篇
- 二零二五年度戶外廣告牌發(fā)布與社區(qū)宣傳合作合同范本3篇
- 2025年度農(nóng)用土地托管服務(wù)與機(jī)械租賃合同4篇
- 2025年度個人二手房買賣協(xié)議書范本:房屋交易環(huán)保評估合同2篇
- 2025貴州貴陽市屬事業(yè)單位招聘筆試和高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2024年住院醫(yī)師規(guī)范化培訓(xùn)師資培訓(xùn)理論考試試題
- 期末綜合測試卷(試題)-2024-2025學(xué)年五年級上冊數(shù)學(xué)人教版
- 招標(biāo)采購基礎(chǔ)知識培訓(xùn)
- 2024年廣東省公務(wù)員錄用考試《行測》試題及答案解析
- 五年級口算題卡每天100題帶答案
- 結(jié)構(gòu)力學(xué)本構(gòu)模型:斷裂力學(xué)模型:斷裂力學(xué)實(shí)驗(yàn)技術(shù)教程
- 2024年貴州省中考理科綜合試卷(含答案)
- 無人機(jī)技術(shù)與遙感
- PDCA提高臥床患者踝泵運(yùn)動的執(zhí)行率
- 黑色素的合成與美白產(chǎn)品的研究進(jìn)展
評論
0/150
提交評論