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

正文內(nèi)容

基于c語言子系統(tǒng)的詞法分析器計與實現(xiàn)畢業(yè)論文(編輯修改稿)

2025-04-03 09:17 本頁面
 

【文章內(nèi)容簡介】 ssion `||` logic2_expression | logic2_expression logic2_expression logic2_expression `amp。amp。` simple_expression | simple_expression simple_expressionadditive_expression relop additive_expression | additive_expression relop `=` | `` | `` | `=` | `==` | `!=` additive_expression additive_expression addop term | term addop `+` | `` termterm mulop logic3_expression | logic3_expression mulop `*` | `/` | `%` logic3_expression `!` logic3_expression | factor factor`(` expression `)` | var | call | NUM varID | ID `[` expression `]` callID `(` args `)` argsargs_list | empty 13 args_listargs_list `,` expression | expression sub_poundstmtID `:` | call `。` | expression_stmt if_stmt`if` `(` expression `)` pound_stmt | `if` `(` expression `)` pound_stmt `else` pound_stmt while_stmt`while` `(` expression `)` pound_stmt for_stmt`for` `(` var `=` expression `。` expression `。` var `=` expression `)` pound_stmt goto_stmt`goto` ID `。` break_stmt`break` `。` continue_stmt`continue` `。` return_stmt`return` `。` | `return` expression `。` 基本樹形結(jié)構(gòu): if語句: while語句: for循環(huán)語句: 復(fù)合語句 : if 語句 表達式 語 句 語句 while 語句 表達式 語句 表達式 語句 表達式 for 語句 表達式 語句 復(fù)合語句 語句 語句 聲明 14 支持的語句及運算: 1) 數(shù)據(jù)類型: int, char void, PCode里支持 float,在 80x86 ASM里不支持 2) 語句:賦值( =), if, while, for, return, break, continue 3) 數(shù)學(xué)運算: +,-, *, / 4) 關(guān)系運算: = =, , , =, =, != 5) 邏輯運算: amp。amp。, ||, ! 6) 支持函數(shù)的定義、調(diào)用 7) 支持復(fù)合語句 8) 注釋語句: C類型的 /* */ 和 C++類型的 // 語義分析模塊設(shè)計 語義分析的任務(wù)是根據(jù)語 義規(guī)則對識別出的各種語法成分分析其含義,進行初步翻譯。具體來說,其主要任務(wù)包括以下幾部分。 確定類型。即確定標識符所對應(yīng)數(shù)據(jù)對象的數(shù)據(jù)類型,這部分工作有時也由詞法分析來完成。 語義檢查。動態(tài)語義檢查在運行時進行,需要生成相應(yīng)的目標代碼;而靜態(tài)語義檢查則在編譯時完成,它主要完成以下四個方面。 識別含義。如果靜態(tài)語義正確,則進行正真的翻譯,即識別程序中各種語法成分的含義,并做相應(yīng)的語義處理,生成相應(yīng)的中間代碼或直接生成目標代碼。 語義分析程序是在詞法分析和語義分析之后,可以由語法分析程序直接調(diào)用相應(yīng) 的語義子程序進行語義處理,也可以先生成語法樹的某種表示方法,再進行語義處理。 編譯的各個階段都可能發(fā)現(xiàn)源程序中的錯誤。發(fā)現(xiàn)錯誤后如果立即停止編譯,往往會降低調(diào)式程序的效率,所以應(yīng)對出現(xiàn)的錯誤做適當(dāng)?shù)奶幚?,從而使編譯能繼續(xù)進行。詞法分析可以檢測出源程序中的非法字符,就好比自然語言中出現(xiàn)的錯字和錯詞。語法分析能夠發(fā)現(xiàn)程序語句中的各種語法錯誤,如括號不匹配等。語義分析能夠判斷運算對象的類型是否匹配,變量是否重復(fù)聲明或沒有聲明就使用等錯誤。任何時刻發(fā)現(xiàn)錯誤,都應(yīng)該報告錯誤信息,包括錯誤出現(xiàn)的位置和錯誤性質(zhì)等,為程序 員調(diào)試程序提供方便。 本程序在語義分析部分設(shè)計主要包括兩方面的內(nèi)容,即建立符號表和類型檢查。 建立符號表: 輔助類: Class LineListRec: 主要成員是 lineno,記錄某個 Token(變量或函數(shù)名)聲明或使用時的行數(shù)。 Class BucketListRec: 15 主要成員變量: CString name。 // variable name CString scope。 // function scope enum TokenType type。 int memloc。 // memory location for variable BOOL bArray。 // for array checking LineListRec* lineno。 BucketListRec* next。 記錄每一個變量或函數(shù)名的具體情況。 主要的類, 建立符號表: Class CSymbolTable: 主要成員變量: BucketListRec* hashTable[SIZE],把 Class BucketListRec 類的對象通過hash函數(shù)找到位置后插入。 函數(shù) PrintSynbalTable( LPCTSTR lpszPathName) ,輸入文件名,通過一個遞歸函數(shù)輸出符號表到文件 lpszPathName。 Class CFunArgsCheck: 插入函數(shù)參數(shù)的類型,以備在下一個步驟中做匹配檢測。 類型檢測: Class CAnalyzer: 包括兩個部分: 類型匹配 : 函數(shù)或變量聲明時檢測是否已聲明,如已聲明則拋出錯誤;函數(shù)調(diào)用或變量使用時檢測是否已聲明,如未聲明則拋出錯誤。 函數(shù)調(diào)用參數(shù)檢測 : 檢測函數(shù)調(diào)用時傳入?yún)?shù)的類型與函數(shù)聲明時參數(shù)的類型是否匹配。 16 界面設(shè)計考量 界 面設(shè)計需要遵循一個基本理論,其核心內(nèi)容是以已有的界面設(shè)計規(guī)范為指導(dǎo)原則,在不破壞已有的界面交互習(xí)慣的基礎(chǔ)上修改創(chuàng)新。桌面界面的設(shè)計,在最早的個人電腦上就有實施,后來由蘋果公司和微軟公司反復(fù)修改和優(yōu)化,如今已經(jīng)逐漸演變成一套系統(tǒng)的設(shè)計規(guī)范,所有軟件圖形界面,所有面向 Web的指導(dǎo)文檔,甚至許多為新型移動設(shè)備提供的設(shè)計參考都相繼遵從,大多數(shù)的界面開發(fā)工具都默認支持這些規(guī)范所設(shè)定的描述語言和相關(guān)內(nèi)容。 重要的是,用戶交互界面在多年來透過操作系統(tǒng)和通用軟件已經(jīng)漸漸被使用者熟悉。無論是界面放置和控制方法(例如 鼠標點擊和快捷鍵操作)都已成為習(xí)慣,如果這種習(xí)慣被打破,就會引起客戶的抗拒心理,因為他們需要花時間學(xué)習(xí)和掌握,甚至?xí)档涂蛻舻墓ぷ餍省A硪环矫?,通用的界面?guī)范不一定能夠滿足程序語言分析軟件的功能要求,因為畢竟客戶是軟件開發(fā)者而不是普通的應(yīng)用性使用者,因此,需要在界面設(shè)計上有一些修改與創(chuàng)新,讓編譯結(jié)果對于客戶一目了然。 系統(tǒng)原型測試 測試工作應(yīng)盡量避免由原開發(fā)軟件的個人或小組來承擔(dān);設(shè)計測試方案時,不僅要包括確定的輸入數(shù)據(jù),而且因包括從系統(tǒng)功能出發(fā)預(yù)期的測試結(jié)果;測試用例不僅要包括 合理、有效的輸入數(shù)據(jù),還要包括無效的或不合理的輸入數(shù)據(jù);不僅要檢驗程序是否做了應(yīng)該完成的事,還要檢查是否同時做了不應(yīng)該完成的事;軟件中仍存在錯誤的概率和已經(jīng)發(fā)現(xiàn)錯誤的個數(shù)是成正比的;而且需要保留測試用例,作為軟件文檔的組成部分。 測試方法: 對軟件進行測試主要方法包括: l)人工測試:個人復(fù)查、走審和會審: 2)機器測試: 黑盒測試:也稱功能測試,將軟件看作黑盒子,在完全不考慮程序內(nèi)部結(jié)構(gòu)和特性的情況下,測試軟件的外部特性。根據(jù)軟件的需求規(guī)格說明書設(shè)計測試用例,從程序的輸入、輸出特性上測試是否滿足所設(shè)計的功 能。 白盒測試:也稱結(jié)構(gòu)測試,將軟件看作一個透明的白盒子,按照程序的內(nèi)部結(jié)構(gòu)和處理邏輯來選定測試用例,對軟件的邏輯路徑及過程進行測試,檢查它與設(shè)計是否相符。 系統(tǒng)測試的步驟 系統(tǒng)的測試步驟一般有以下四個步驟:單元測試、組裝測試、確認測試和系統(tǒng)測試,每一步都是在前一步的基礎(chǔ)之上進行。 首先進行的是單元測試,它是對程序中的一個模塊或子系統(tǒng)進行測試,其目的是為了保證每個模塊作為一個獨立單元能夠正確運行,一般采用白盒測試,根據(jù)詳細設(shè)計的描述,從模塊內(nèi)部結(jié)構(gòu)出發(fā)設(shè)計測試用例。 17 對每個模塊完成了單元測試以后,需 要按照設(shè)計時做出的層次模塊圖把他們連接起來,進行組裝測試,這一步驟是為了保證各個模塊聯(lián)結(jié)起來也能正常工作,它以系統(tǒng)仔細設(shè)計和程序設(shè)計為依據(jù),通常采用黑盒測試方法。 經(jīng)過組裝測試,軟件已配備完畢,而接下來的確認測試是要進一步檢查軟件是否符合軟件需求規(guī)格說明書的全部要求,因此也稱為合格性測試或驗收測試,采用的是黑盒測試方法,由于是面向用戶的,所以需要用戶的參與。 經(jīng)過確認測試后,軟件已測試完畢,但軟件只是信息系統(tǒng)的一個組成部分,還必須要與系統(tǒng)中的其他部分配套進行,進行系統(tǒng)測試。它是將系統(tǒng)的所有組成部分包括軟件、 硬件、用戶以及環(huán)境現(xiàn)場,在用戶的直接參與下進行。通常也采用黑盒測試。 應(yīng)用程序的調(diào)試是對已經(jīng)編寫好的腳本語句進行查錯操作,調(diào)試程序是設(shè)計過程不可缺少的環(huán)節(jié),如果在程序編寫的過程中,發(fā)現(xiàn)程序運行有錯誤,可以利用程序調(diào)試工具將錯誤找出來。本程序使用 VS 2021 的調(diào)試畫板進行調(diào)試操作,先設(shè)置斷點,然后運行調(diào)試。由于使用方便、簡單宜用,節(jié)省了設(shè)計時間和復(fù)雜的差錯工作,為開發(fā)軟件提供了有利的保障。 測試結(jié)果 代碼關(guān)鍵字高亮顯示功能在 windows XP 系統(tǒng)上運行正常,但是在 Vista 系統(tǒng)偶爾有不正常現(xiàn)象, 目前沒有得到很好的解決。編譯程序只能識別 ANSI C的語法,其他語法一律按照編譯錯誤執(zhí)行。信息輸出窗口紅色錯誤信息的顏色偶有不正確現(xiàn)象。第 5 章 結(jié)束語 本次開發(fā)設(shè)計是對 C語言課程、數(shù)據(jù)結(jié)構(gòu)、編譯原理等一系列的課程的回顧學(xué)習(xí)。在開發(fā)基于 C語言小型編譯器中,還是用系統(tǒng)分析、系統(tǒng)設(shè)計的思路。一個好的系統(tǒng)分析、設(shè)計工作,會使以后的系統(tǒng)實施順利高效的進行,從而達到事半功倍的效果,這也是我的一點心得體會吧。 本畢業(yè)設(shè)計程序界面十分簡便,在對 C語言語法理解的基礎(chǔ)上,建立一個能夠既能夠分色顯示源代碼,又可以簡單編譯 C源碼的 簡單開發(fā)和編譯平臺。 對于系統(tǒng)的可擴展性,在設(shè)計前也做了充分的考慮,在設(shè)計時預(yù)留了一些余地,以便本系統(tǒng)在 C語言語法不變的情況下一直都能使用,而不需要再重新開發(fā)。同時在設(shè)計上使用的是模塊化的設(shè)計,更為系統(tǒng)以后的擴展提供了良好的條件。 同時系統(tǒng)也存在的問題與改進方向 ,由于本人第一次開發(fā)編程語言編譯程序,經(jīng)驗不足,所以存在著許多不足之處。由于時間緊,開發(fā)任務(wù)重,系統(tǒng)有些功能尚未健全。 參考文獻 [1] 陳火旺 .程序設(shè)計語言 — 編譯原理 [M].北京:國防工業(yè)出版社 .2021. [2] 馮博琴 .編譯原理及實踐 [M].北京:機械工業(yè)出版社 .2021. [3] alfred v. [M].北京:機械工業(yè)出版社 .2021. 18 [4] andrew . 現(xiàn)代編譯原理 c語言描述 [M].北京:人民郵電出版社 . [5] 張素琴,呂映芝,蔣維杜,戴桂蘭 .編譯原理 .北京:清華大學(xué)出版社, 2021. [6] 孔祥芝,王昌金.基于 ALEX 的 ATLAS 詞法分析器設(shè)計與實現(xiàn) [J].微計算機信息,2021(20): 6769. [7] 胡慧 ,張海 ,余瑪俐 . 類 C語言詞法分析器的設(shè)計與實現(xiàn) [J]. 軟件導(dǎo)刊 , 2021, (21) :114116. [8] 徐明君 ,吳慶曦 ,宋方敏 . NDQJava語言詞法分析程序 [J]. 南京大學(xué)學(xué)報 (自然科學(xué)版 ), 2021, (02): 8083. [9] 梁里寧,蔡成滇 . 用 UNIXLEX/ YACC生成 PL/ 0編譯器 [J]. 暨南大學(xué)學(xué)報 (自然科學(xué)與醫(yī)學(xué)版 ), 1994, (03):4749. [10]何炎祥 .編譯原理 .2版 .華中科技大學(xué)出版社, 9JWKf wvGt YM*Jgamp。 6a*CZ7H$dq8Kqqf HVZFedswSyXTyamp。 QA9wkxFyeQ^! djsXuyUP2kNXpRWXm Aamp。 UE9aQ@Gn8xp$Ramp。849Gx^Gj qv^$UE9wEwZQc@UE%amp。 qYp@Eh5pDx2zVkumamp。 gTXRm 6X4NGpP$vSTTamp。ksv*3t nGK8!z89Am YWpazadNuKNamp。MuWFA5uxY7JnD6YWRr Wwc^vR9CpbK!zn%Mz849Gx^Gj qv^$UE9wEwZQc@UE% amp。 qYp@Eh5pDx2zVkum amp。gTXRm 6X4NGpP$vST
點擊復(fù)制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1