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

正文內(nèi)容

c語言編譯器設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)論文-在線瀏覽

2024-09-06 09:04本頁面
  

【正文】 系統(tǒng)的開發(fā)費(fèi)用和今后的運(yùn)行、維護(hù)費(fèi)用,估計(jì)新系統(tǒng)將獲得的效益,并將費(fèi)用與效益進(jìn)行比較,看是否有利。軟件開發(fā)費(fèi)用:若由實(shí)習(xí)單位的技術(shù)人員開發(fā),則該項(xiàng)費(fèi)用可以計(jì)入下面的人員費(fèi)用一項(xiàng);人員費(fèi)用:系統(tǒng)開發(fā)人員、操作人員和維護(hù)人員的工資、培訓(xùn)費(fèi)用等;消耗品費(fèi)用:系統(tǒng)開發(fā)所用材料、系統(tǒng)正常運(yùn)行所用消耗品,例如水、電費(fèi),打印紙、軟盤、色帶等開支。 技術(shù)可行性技術(shù)可行性要考慮現(xiàn)有的技術(shù)條件是否能夠順利完成開發(fā)工作,軟硬件配置是否滿足開發(fā)的需求等。軟件方面:由于目前BS模式軟件相對(duì)發(fā)展成熟,故軟件的開發(fā)平臺(tái)成熟可行,它們速度快、容量大、可靠性能高、價(jià)格低,完全能滿足系統(tǒng)的需求。同時(shí)還應(yīng)考慮現(xiàn)有管理人員的培訓(xùn)、補(bǔ)充,分析在給定時(shí)間里能否完成預(yù)定的系統(tǒng)開發(fā)任務(wù)等。當(dāng)前我國信息化技術(shù)已經(jīng)相當(dāng)普及,各類操作人員水平都有相當(dāng)?shù)母叨龋栽谶\(yùn)行上是可行性的。已無技術(shù)上的問題。 法律可行性① 所有技術(shù)資料都為合法。③ 未抄襲任何已存在的會(huì)員信息管理系統(tǒng),不存在侵犯版權(quán)問題。綜上所述,本系統(tǒng)的開發(fā)從技術(shù)上、從經(jīng)濟(jì)上、從法律上都是完全可靠的??紤]到針對(duì)現(xiàn)有的處理器來說,如果使用真正的機(jī)器代碼作為C編譯器的目標(biāo)語言會(huì)太過于復(fù)雜,所以C語言將目標(biāo)程序簡化為三地址碼的四元式表示形式。這種四元式表達(dá)式更接近于中間語言形式,由于這種形式的中間語言便于優(yōu)化處理,因此是一種比較普遍采用的中間代碼形式。C源程序是一個(gè)由分號(hào)分隔開的語句序列。if語句有一個(gè)可選的else部分。C的表達(dá)式也局限于布爾表達(dá)式和整型算術(shù)表達(dá)式。算術(shù)表達(dá)式可以包括整型常數(shù)、變量、參數(shù)以及4個(gè)整型算符+、*、/,它們具備和通用語言相似的數(shù)學(xué)屬性。雖然缺少實(shí)用程序設(shè)計(jì)語言(如C、Pascal)所需要的許多特征——比如數(shù)組和指針等,但作為一次完整的編譯開發(fā)實(shí)踐,它已經(jīng)足夠體現(xiàn)出一個(gè)編譯器的開發(fā)過程了。簡單的說,C編譯器的功能就是掃描C源程序,識(shí)別單詞,轉(zhuǎn)換成屬性字,再經(jīng)過語義處理和代碼生成,最終得到目標(biāo)代碼文件即三地址四元表達(dá)式。(2)生成LR(1)分析表。(4)將單詞轉(zhuǎn)換成屬性字,并輸出二元組屬性字流。(6)生成目標(biāo)代碼。 C編譯器的程序結(jié)構(gòu) C編譯器的設(shè)計(jì)模式C編譯器用C++實(shí)現(xiàn),下面是主要類的類圖:TokenReadCfgScannerLrGrammer圖31 C++實(shí)現(xiàn)C語言編譯器的類圖(1) :C編譯器的主程序。(3)詞法掃描類Scanner:關(guān)鍵字、算符與界符將直接形成Token字;標(biāo)識(shí)符將插入符號(hào)表后形成Token字,數(shù)字將插入常數(shù)表后形成Token字。(5) LR(1)分析表的構(gòu)造類Grammer:根據(jù)C語言文法的特點(diǎn),夠造出相應(yīng)的分析表(包括ACTION表和GOTO表)。 C編譯器的文件組成.h頭文件.cpp源文件模塊功能說明文法的定義Token字詞法分析語法分析表的構(gòu)造語法和語義分析表31 C編譯器的文件組成基類Token,它包括了編譯器中各種數(shù)據(jù)類型的定義和整個(gè)編譯器均可能使用到的全局變量的定義。C語言文法總結(jié)出有57個(gè)產(chǎn)生式,終結(jié)符(terminal)31和存放在setint terminal中,非終結(jié)符26個(gè),存放在setint nonterminal中。Grammer類主要負(fù)責(zé)大量數(shù)據(jù)結(jié)構(gòu)的保存和LR(1)分析表的構(gòu)造。 文件是C編譯器的主程序,它負(fù)責(zé)整個(gè)程序的掌控。(1) 記號(hào)(token)當(dāng)掃描程序?qū)⑷舾蓚€(gè)字符收集到一個(gè)記號(hào)中時(shí),它通常是以符號(hào)表示這個(gè)記號(hào)的,也就是說,用一個(gè)枚舉數(shù)據(jù)類型的值來表示源程序的記號(hào)集。在C編譯器中,掃描程序一次只需要生成一個(gè)記號(hào)(這稱為單符號(hào)先行),考慮到這種情況,可以用全程變來量放置記號(hào)信息。它幾乎與編譯器的所有階段交互:掃描程序、分析程序或?qū)?biāo)識(shí)符輸入到表格中的語義分析程序;語義分析程序?qū)⒃黾訑?shù)據(jù)類型和其它語義信息;優(yōu)化階段和代碼生成階段也將利用由符號(hào)表提供的信息生成正確而恰當(dāng)?shù)拇a。盡管可以使用各種樹的結(jié)構(gòu),但雜湊表卻是能達(dá)到這一要求的最理想的數(shù)據(jù)結(jié)構(gòu)。每個(gè)LR(1)項(xiàng)目集簇由若干狀態(tài)組成,每個(gè)狀態(tài)由若干項(xiàng)目組成。(4) 中間代碼(intermediate code)根據(jù)中間代碼的類型(例如三元式代碼和P代碼)和優(yōu)化的類型,該代碼可以是字符串?dāng)?shù)組(指針數(shù)組)、臨時(shí)文本文件或是結(jié)構(gòu)的連接列表。 第四章 C編譯器的實(shí)現(xiàn)C編譯器從整體上被劃分為4個(gè)階段:詞法分析、語法分析、語義分析、代碼生成,這4個(gè)階段分別用不同的程序模塊來實(shí)現(xiàn)(如表31)。 詞法分析階段 概述編譯器的詞法分析階段可將源程序讀作有序字符文件并將其掃描分解為若干個(gè)記號(hào)(token)。典型的有:關(guān)鍵字(keyword),例如if和while,它們是字母的固定串,在該語言中具有特定的含義;標(biāo)識(shí)符(identifier)是由用戶定義的串,它們通常由字母和數(shù)字組成并由一個(gè)字母開頭,例如變量名函數(shù)名等;算符符(operation symbol)在語言中是作為語法上的運(yùn)算符號(hào)使用的。如前所述,詞法分析程序的輸入是源程序字符串,輸出是與源程序等價(jià)的符號(hào)序列。為了便于編譯程序的進(jìn)一步加工(語法分析),內(nèi)部表示的符號(hào)都按屬性字形式,因此,詞法分析程序的輸出即是屬性字序列,采用二元式來表示一個(gè)單詞符號(hào)的內(nèi)部形式。關(guān)鍵字、算符與界符將直接形成Token字;標(biāo)識(shí)符將插入符號(hào)表后形成Token字,數(shù)字將插入常數(shù)表后形成Token字。一般情況下,可以通過兩種途徑來設(shè)計(jì)詞法分析程序。為了實(shí)現(xiàn)簡單,本實(shí)驗(yàn)采取手工構(gòu)造方式。關(guān)鍵字一共有8個(gè),它們的含義類似于標(biāo)準(zhǔn)C語言中的相應(yīng)關(guān)鍵字。其中,除了比較等號(hào)、小于等于符號(hào)和大于等于是兩個(gè)字符的長度之外,其余均為單個(gè)字符。所有這些記號(hào)歸納如下表42:關(guān)鍵字(8個(gè))Int、if、while、double、return、void、continue、break界限符(12個(gè))+、*、/、==、= 、=、=、( 、) 、。根據(jù)對(duì)語言中各類單詞某種描述的定義,用手工方式構(gòu)造詞法分析程序。下面給出單獨(dú)成趟詞法分析控制流程圖。每次返回一個(gè)識(shí)別的單詞,遇到不識(shí)別的單詞就報(bào)錯(cuò),輸出不識(shí)別的單詞和該單詞的行數(shù)。關(guān)鍵字、算符與界符將直接形成Token字;標(biāo)識(shí)符將插入符號(hào)表后形成Token字,數(shù)字將插入常數(shù)表后形成Token字。Value是文法中非終結(jié)符,而Tag是Value對(duì)應(yīng)的唯一標(biāo)記。 詞法識(shí)別具體實(shí)現(xiàn)//分析一個(gè)單詞,并返回單詞的Token字Token Scanner::scan(){ int i=0。 static char prev_c = 0。 prev_c = c。 if (c==39。) //遇到換行符 linenum++。 39。\t39。 //跳過,繼續(xù)讀 else //遇到普通字符,跳出循環(huán) break。/39。amp。/39。*39。 else if (isdigit(c)) //數(shù)字 return (digit_process())。+39。39。*39。/39。=39。39。39。!39。amp。: {...} case 39。: {...} case 39。: {...} case 39。: return (Token(get_int((), ())。)39。 case 39。: return (Token(get_int([), [))。]39。 case 39。: return (Token(get_int({), {))。}39。 case 39。: return (string_process())。39。),。 case 39。: return (Token(get_int(,),))。.39。 case 39。: return (Token(get_int(:),:))。\39。: {...} case 39。: {...} default: std::cout Error, line linenum :\tillegal character \39。\n。 line[1] = 39。 return (Token(get_int(ILLEGAL), (line)))。} 語法分析階段 概述語法分析是編譯過程的核心,分析的任務(wù)是根據(jù)語法規(guī)則分析源程序的語法結(jié)構(gòu),并在分析過程中,對(duì)源程序進(jìn)行語法檢查,如果語法沒有錯(cuò)誤,則給出正確的語法結(jié)構(gòu),為語義分析和代碼生成做準(zhǔn)備。自頂而下又分為LL(1)分析方法和遞歸下降分析方法。下面主要介紹自底而上的LR(K)分析方法。它的實(shí)現(xiàn)思想是對(duì)輸入符號(hào)串自左向右進(jìn)行掃描,并將輸入符逐個(gè)移入一個(gè)后進(jìn)先出棧中,邊移入邊分析,一旦棧頂符號(hào)串形成某個(gè)句型的句柄時(shí),(該句柄對(duì)應(yīng)某產(chǎn)生式的右部),就用該產(chǎn)生式的左部非終結(jié)符代替相應(yīng)右部的文法符號(hào)串,這稱為移步歸約。否則,分析失敗,表示輸入符號(hào)串不是文法的一個(gè)句子,其中必定存在語法錯(cuò)誤。自底而上的分析方法就是移進(jìn)規(guī)約的過程。LR(K)分析方法適用范圍較廣,分析速度較快,并且能準(zhǔn)確及時(shí)地發(fā)現(xiàn)語法錯(cuò)誤。因此,LR分析法是當(dāng)前最一般的語法分析方法。因此,綜合考慮,本實(shí)驗(yàn)采用LR(1)分析方法進(jìn)行語法分析。換句話說,給定一個(gè)文法,就能從結(jié)構(gòu)上唯一的確定語言(形式語言理論可以證明此結(jié)論為真)。因?yàn)橥ㄟ^文法規(guī)則,最終得到的句子只能含有這些字符,這種字母稱為終結(jié)符集合,記為termanal。3. 文法規(guī)則集合。讀作“導(dǎo)出”、“產(chǎn)生”、“生成”或者“定義為”。S0為特殊的非終結(jié)符。 6 type_specifier void 7 type_specifier int 8 type_specifier double 9function_definitiontype_specifier function_name parameter pound_statement 10 function_name id 11 parameter ( ) 12 pound_statement { decalration_list } 13 pound_statement { statement_list } 14 pound_statement { decalration_list statement_list } 15 decalration_list declaration 16 decalration_list decalration_list declaration 17 statement_list statement 18 statement_list statement_list statement 19 statement pound_statement 20 statement expression_statement 21 statement selection_statement M 22 statement iteration_statement M 23 statement jump_statement 24 expression_statement 。 26 expression assignment_expression 27 assignment_expression primary_expression = assignment_expression 28 assignment_expression logical_or_expression 29 logical_or_expression logical_or_expression || M logical_and_expression 30 logical_or_expression logical_and_expression 31 logical_and_expression logical_and_expression amp。 M equality_expression 32 logical_and_expression equality_expression 33 equality_expression equality_expression == relational_expression 34 equality_expression relational_expression 35 relational_expression relational_expression additive_expression 36 relational_expression relational_expression additive_expression 37 relational_expression relational_expression = additive_expression 38 relational_expression relational_expression = additive_expression 39 relational_expression additive_expression 40 additive_expression additive_expression multiplicative_expression 41 additive_expression addit
點(diǎn)擊復(fù)制文檔內(nèi)容
語文相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1