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

正文內(nèi)容

畢業(yè)設(shè)計(jì)c語(yǔ)言編譯器的設(shè)計(jì)開(kāi)發(fā)-字節(jié)代碼格式設(shè)計(jì)與實(shí)現(xiàn)-在線(xiàn)瀏覽

2025-02-03 21:00本頁(yè)面
  

【正文】 編譯器是一個(gè)程序,它讀入用某種語(yǔ)言(源語(yǔ)言)編寫(xiě)的程序并將其翻譯成一個(gè)與之等價(jià)的以另一種語(yǔ)言(目標(biāo)語(yǔ)言)編寫(xiě)的程序。 編譯器由兩部分組成:分析與綜合。在分析期 間,源程序所蘊(yùn)含的操作將被確定下來(lái)并被表示成為一個(gè)稱(chēng)為語(yǔ)法樹(shù)的分層結(jié)構(gòu)。 許多操縱源程序的軟件工具都首先完成某種類(lèi)型的分析。 2. 智能打印機(jī),智能打印機(jī)能夠?qū)Τ绦蜻M(jìn)行分析,打印出結(jié)構(gòu)清晰的程序。 4. 解釋器,解釋器不是通過(guò)翻譯來(lái)產(chǎn)生目標(biāo)程序,而是直接執(zhí)行源程序中蘊(yùn)含的操作。目標(biāo)語(yǔ)言也同樣廣泛,目標(biāo)語(yǔ)言可以是另一種程序設(shè)計(jì)語(yǔ)言或者是從微處理機(jī)到計(jì)算機(jī)的任何計(jì)算機(jī)的機(jī)器語(yǔ)言。根據(jù)編譯器的構(gòu)造方法或者它們要實(shí)現(xiàn)的功能,編譯器被分為一遍編譯器、多遍編譯器、裝入并執(zhí)行編譯器、調(diào)試編譯器、優(yōu)化編譯器等多種類(lèi)別。通過(guò)理解這些任務(wù),我們可以利用同樣的 基本技術(shù)為各種各樣的源語(yǔ)言和目標(biāo)機(jī)器構(gòu)建編譯器。整個(gè) 20世紀(jì) 50年代,編譯器的編寫(xiě)一直被認(rèn)為是一個(gè)極難的問(wèn)題。良好的實(shí)現(xiàn)語(yǔ)言、程序設(shè)計(jì)環(huán)境和軟件工具也已經(jīng)被開(kāi)發(fā)出來(lái)。它的功能是以任一語(yǔ)言的詞法規(guī)則、語(yǔ)法規(guī)則和語(yǔ)義解釋出發(fā),自動(dòng)產(chǎn)生該語(yǔ)言的編譯程序。 20世紀(jì) 60 年代起,不斷有人使用自展技術(shù)來(lái)構(gòu)造編譯程序。自從 1971 年, PASCAL 的編譯程序用自展技術(shù)生成后,起影響就越來(lái)越大。 由于近幾年并行機(jī)及多處理機(jī)的發(fā)展,對(duì)軟件的并行處理 技術(shù)提出了新的要求。 第二種方法,即在程序設(shè)計(jì)語(yǔ)言機(jī)制上允許用戶(hù)自己編寫(xiě)并行程序,這當(dāng)然比編寫(xiě)串行語(yǔ)言對(duì)編程人員提出的要求更多。若編程者能按程序設(shè)計(jì)情況編出并行程序,無(wú)疑并 行程序效率將比第一種方法要好。 代碼生成較復(fù)雜,所以編譯器一般將這一階段分成幾個(gè)涉及不同中間數(shù)據(jù)結(jié)構(gòu)的步驟,其中包括了某種稱(chēng)作中間代碼的抽象代碼。匯編器、鏈接器和裝入器可由操心系統(tǒng)提供或由編譯器自帶。雖然抽象語(yǔ) 法樹(shù)是源代碼完美充分的表達(dá),即使對(duì)于代碼生成也不過(guò)這樣,但是它與目標(biāo)代碼極不相像,在控制流構(gòu)造上尤為如此。因此,編譯器編寫(xiě)者可能希望從語(yǔ)法樹(shù)生成一個(gè)更接近目標(biāo)代碼的中間表示形式,或者用這樣一個(gè)中間表示代替語(yǔ)法樹(shù),然后再?gòu)倪@個(gè)新的中間表示生成目標(biāo)代碼。然后編譯程序再調(diào)用相應(yīng)的處理程序,將中間代碼轉(zhuǎn)換 第 5 頁(yè) 共 41 頁(yè) 為計(jì)算機(jī)能處理的機(jī)器指令,最終得到目標(biāo)代碼。從功能上看,一個(gè)編譯程序就是一個(gè)語(yǔ)言翻譯程序。比如匯編程序是一個(gè)翻譯程序,它把匯編語(yǔ)言程序翻譯成機(jī)器語(yǔ)言程序。 一個(gè)編譯程序的重要性體現(xiàn)在它使得多數(shù)計(jì)算機(jī)用戶(hù)不必考慮與機(jī)器有關(guān)的繁索細(xì)節(jié),使程 序員和程序設(shè)計(jì)專(zhuān)家獨(dú)立于機(jī)器,這對(duì)于當(dāng)今機(jī)器的數(shù)量和種類(lèi)持續(xù)不斷地增長(zhǎng)的年代憂(yōu)為重要。 高級(jí)語(yǔ)言程序的處理過(guò)程如圖: 需處理的源程序 源程序 目標(biāo)匯編程序 可再裝配的機(jī)器代碼 可在裝配的目標(biāo)文件 絕對(duì)機(jī)器代碼 一個(gè)源程序有時(shí)可能分成幾個(gè)模塊存放在不同的文件里,將這些源程序匯集在一起的任務(wù),由一個(gè)叫做預(yù)處理程序的程序完成,有些預(yù)處理程序也負(fù)責(zé)宏展開(kāi),像 C語(yǔ)言和預(yù)處理程序要完成文件合并、宏展開(kāi)等任務(wù)。 編譯程序完成從源程序到目標(biāo)程序的翻 譯工作,是一個(gè)復(fù)雜的整體的過(guò)程。 預(yù)處理程序 編譯程序 匯編程序 裝配 /連接 —編輯程序 第 6 頁(yè) 共 41 頁(yè) 源程序 圖 1 圖 1 將編譯過(guò)程劃分了詞法分析、語(yǔ)法分析、語(yǔ)義分析、中 間代碼生成、代碼優(yōu)化、目標(biāo)代碼生成、六個(gè)階級(jí)。編譯過(guò)程是源程序和各種信息被子保留在種種不同的表格里,編譯各階級(jí)的工作都涉及到構(gòu)造、查找或更新有關(guān)的表格,因此需要有表格處理的工作;如果編譯過(guò)程中發(fā)現(xiàn)源程序有錯(cuò)誤,編譯程序應(yīng)報(bào)告錯(cuò)誤的性質(zhì)和錯(cuò)誤發(fā)生的地點(diǎn),并且將錯(cuò)誤所造成的影響限制在盡可能小的范圍內(nèi),使得源程序的其余部分能繼續(xù)被編譯下去,有些編譯程序還能自動(dòng)校正錯(cuò)誤,這些工作稱(chēng)之為出錯(cuò)處理。這個(gè)階級(jí)的任務(wù)是從左到 右一個(gè)字符一個(gè)字符地讀入源程序,對(duì)構(gòu)成源程序的字符流進(jìn)行掃描和分解,從而識(shí)別一個(gè)個(gè)單詞(也稱(chēng)為單詞符號(hào)或符號(hào))。比如標(biāo)識(shí)是由字母開(kāi)頭,后跟字母、數(shù)字字符序列組成的一種單詞。 語(yǔ)法分析是編譯過(guò)程的第二個(gè)階級(jí)。一般這種語(yǔ)法短語(yǔ),也稱(chēng)為語(yǔ)法單位,可表示成語(yǔ)法樹(shù)。通過(guò)語(yǔ)法分析確定整個(gè)輸入串是否構(gòu)成一個(gè)語(yǔ)法上正確的程序。但詞法分析的任務(wù)僅對(duì)源程序進(jìn)行線(xiàn)性?huà)呙杓纯赏瓿?,比如識(shí)別標(biāo)識(shí)符,因?yàn)闃?biāo)識(shí)符的結(jié)構(gòu)是字母打頭的字母和數(shù)字序列,這只要順序掃描輸入流,遇到既不是字母又不是數(shù)字字符時(shí),將前面所發(fā)現(xiàn)的所有字母和數(shù)字組合在一起而構(gòu)成單詞標(biāo)識(shí)符。 語(yǔ)義分析階級(jí)是審查源程序有無(wú)語(yǔ)義錯(cuò)誤,為代碼生成階級(jí)收集類(lèi)型信息。如有的編譯程序要對(duì)實(shí)數(shù)用個(gè)數(shù)組下標(biāo)的情況報(bào)告錯(cuò)誤。 中間代碼生成在進(jìn)行了上述的語(yǔ)法分析和語(yǔ)義分析的工作之后,有的編譯程序?qū)⒃闯绦蜃兂梢环N內(nèi)部表示形式,這種內(nèi)部表示形式叫做中間語(yǔ)言或中間代碼。很多編譯程采用了一種近似“三地址指令”的“四元式”中間代碼,這種四元式的形式為:(運(yùn)算符,運(yùn)算對(duì)象 1,運(yùn)算對(duì)象 2,結(jié)果)。 目標(biāo)代碼生成的任務(wù)是把是間代碼變換成特定機(jī)器上的絕對(duì)指令代碼或可重定位的指令代碼或匯編指令代碼。 有時(shí),常常把編譯的過(guò)程分為前端和后端,前端由那樣一些階級(jí)組成:這些階級(jí)的工作主要依賴(lài)于源語(yǔ)言而與目標(biāo)機(jī)無(wú)關(guān)。后端工作指那些依賴(lài)于目標(biāo)機(jī)而一般不依賴(lài)源語(yǔ)言,只與中間代碼有關(guān)的那些階段,即目標(biāo)代碼生成,以及相關(guān)出錯(cuò)處理和符號(hào)表操作。也可以設(shè)想,不同語(yǔ)言編譯的前端生成同一種中間語(yǔ)言,再使用一個(gè)共同的后端,則可為同一機(jī)器生成幾個(gè)語(yǔ)言的編譯程序。所謂“遍”,也稱(chēng)作“趟”,是對(duì)源程序或其等價(jià)的中間語(yǔ)言程序從頭到尾掃視并完成規(guī)定任務(wù)的過(guò)程。例如一遍可以只完成詞法分析工作;一遍完成詞法分析和語(yǔ)法分析工作;甚至一遍完成整個(gè)編譯工作。 第 8 頁(yè) 共 41 頁(yè) 3 系統(tǒng)需求分析 LEX 概述 LEX 是一個(gè)詞法分析器(掃描器)的自動(dòng)產(chǎn)生系統(tǒng),它的示意圖如下: LEX源程序 LEX yylex 輸入串 yylex 單詞符號(hào)串 LEX 源程序是用一種面向問(wèn)題的語(yǔ)言寫(xiě)成的。在這個(gè)語(yǔ)言中用戶(hù)還可以描述某一個(gè)詞形被識(shí)別出來(lái)時(shí)要完成的動(dòng)作,例如在高級(jí)語(yǔ)言的詞法分析器中,當(dāng)識(shí)別 出一個(gè)關(guān)鍵字時(shí),它應(yīng)該向語(yǔ)法分析器返回該關(guān)鍵字的內(nèi)部編碼。 LEX 自動(dòng)地把表示輸入串詞法結(jié)構(gòu)的正規(guī)式及相應(yīng)的動(dòng)作轉(zhuǎn)換成一個(gè)宿主語(yǔ)言的程序,即詞法分析程序,它有一個(gè)固定的名字yylex,在這里 yylex 是一個(gè) C語(yǔ)言程序。一九七八年由美國(guó)電話(huà)電報(bào)公司 (ATamp。同時(shí)由 和 合著了著名的“ THE C PROGRAMMING LANGUAGE”一書(shū)。R》,也有人稱(chēng)之為《 Kamp。但是,在《 Kamp。通常稱(chēng)之為 ANSI C。由于C語(yǔ)言的強(qiáng)大功能和各方面的優(yōu)點(diǎn)逐漸為人們認(rèn)識(shí),到了八十年代, C 開(kāi)始進(jìn)入其它操作系統(tǒng),并 很快在各類(lèi)大、中、小和微型計(jì)算機(jī)上得到了廣泛的使用,成為當(dāng)代最優(yōu)秀的程序設(shè)計(jì)語(yǔ)言之一。 Microsoft C 或稱(chēng) MS C ATamp。 C語(yǔ)言的特點(diǎn): 1 ANSI C 一共只有 32 個(gè)關(guān)鍵字 : auto break Case char const continue default Do double else enum extern float for goto if int long register return short signed static Sizof struct switch typedef union unsigned void volatile while 9 種控制語(yǔ)句,程序書(shū)寫(xiě)自由,主要用小寫(xiě)字母表示,壓縮了一切不必要的成分。 2共有 34 種。從而使 C的運(yùn)算類(lèi)型極為豐富,可以實(shí)現(xiàn)其他高級(jí)語(yǔ)言難以實(shí)現(xiàn)的運(yùn)算。數(shù)據(jù)結(jié)構(gòu)類(lèi)型豐富。具有結(jié)構(gòu)化的控制語(yǔ)句。語(yǔ)法限制不太嚴(yán)格,程序設(shè)計(jì)自由度大。 C語(yǔ)言允許直接訪(fǎng)問(wèn)物理地址,能進(jìn)行位( bit)操作,能實(shí)現(xiàn)匯編語(yǔ)言的大部分功能,可以直接對(duì)硬件進(jìn)行操作。 7 8 但是, C語(yǔ)言對(duì)程序員要求也高,程序員用 C寫(xiě)程序會(huì)感到限制少、靈活性大,功能強(qiáng),但較其他高級(jí)語(yǔ)言在學(xué)習(xí)上要困難一些。C語(yǔ)言字符集由字母,數(shù)字,空格,標(biāo)點(diǎn)和特殊字符組成。 小寫(xiě)字母 a~ z共 26 個(gè) 大寫(xiě)字母 A~ Z共 26 個(gè) 0~ 9共 10 個(gè) 空格符、制表符、換行符等統(tǒng)稱(chēng)為空白符。在其它地方出現(xiàn)時(shí),只起間隔作用,編譯程序?qū)λ鼈兒雎圆挥?jì)。 C 語(yǔ)言詞匯: 在C語(yǔ)言中使用的詞匯分為六類(lèi):標(biāo)識(shí)符,關(guān)鍵字,運(yùn)算符,分隔符,常量,注釋符等。除庫(kù)函數(shù)的函數(shù)名由系統(tǒng)定義外,其余都由用戶(hù)自定義。 以下標(biāo)識(shí)符是合法的: a, x, x3, BOOK_1, sum5 以下標(biāo)識(shí)符是非法的: 3s 以數(shù)字開(kāi)頭 s*T 出現(xiàn)非法字符 * 3x 以減號(hào)開(kāi)頭 bowy1 出現(xiàn)非法字符 (減號(hào) ) 在使用標(biāo)識(shí)符時(shí)還必須注意以下幾點(diǎn): (1)標(biāo)準(zhǔn) C 不限制標(biāo)識(shí)符的長(zhǎng)度,但它受各種版本的 C 語(yǔ)言編譯系統(tǒng)限制,同時(shí)也 受到具體機(jī)器的限制。 (2)在標(biāo)識(shí)符中,大小寫(xiě)是有區(qū)別的。 (3)標(biāo)識(shí)符雖然可由程序員隨意定義,但標(biāo)識(shí)符是用于標(biāo)識(shí)某個(gè)量的符號(hào)。 關(guān)鍵字是由C語(yǔ)言規(guī)定的具有特定意義的字符串,通常也稱(chēng)為保留字。C語(yǔ)言的關(guān)鍵字分為以下幾類(lèi): (1)類(lèi)型說(shuō)明符 用于定義、說(shuō)明變量、函數(shù)或其它數(shù)據(jù)結(jié)構(gòu)的類(lèi)型。如例 中用到的 if else 就是條件語(yǔ)句的語(yǔ)句定義符。如前面各例中用到的 include。運(yùn)算符與變量,函數(shù)一起組成表達(dá)式,表示各種運(yùn)算功能。 在C語(yǔ)言中采用的分隔符 有逗號(hào)和空格兩種。空格多用于語(yǔ)句各單詞之間,作間隔符。寫(xiě)成 inta。 C 語(yǔ)言中使用的常量可分為數(shù)字常量、字符常量、字符串常量、符號(hào)常量、轉(zhuǎn)義字符等多種。 C 語(yǔ)言的注釋符是以“ /*”開(kāi)頭并以“ */”結(jié)尾的串。程序編譯時(shí),不對(duì)注釋作任何處理。注釋用來(lái)向用戶(hù)提示或解釋程序的意義。 3. 3 軟件工程方法論的應(yīng)用 軟件工程是指導(dǎo)計(jì)算機(jī)軟件開(kāi)發(fā)和維護(hù)的工程學(xué),采用工程的概念、原理、技術(shù)、和方法開(kāi)發(fā)與維護(hù)軟件,把經(jīng)過(guò)時(shí)間考驗(yàn)而證明正確的管理技術(shù)和當(dāng)前能夠得到的最好的技術(shù)方法結(jié)合起來(lái)。著名的軟件工程專(zhuān)家 綜合這些學(xué)者們的意見(jiàn)并總結(jié)了 TRW 公司多年開(kāi)發(fā)軟件的經(jīng)驗(yàn),于 1983 年在一篇論文中提出軟件工程的七條原理。這七條原理是互相獨(dú)立的,其中任意六條原理的組合都不能代替另一條原理,因此,它們是缺一不可的最小集合,然而這七條原理又是相當(dāng)完備的,人們雖然不能用數(shù)學(xué)方法嚴(yán)格證明它們是一個(gè)完備的集合,但是,可以證明在此之前已經(jīng)提出的 100 多條軟件工程原理都可以由 第 11 頁(yè) 共 41 頁(yè) 這 七條原理的任意組合蘊(yùn)含或派生。 Boehm 認(rèn)為,在軟件的整個(gè)生命周期中應(yīng)制定并嚴(yán)格執(zhí)行六類(lèi)計(jì)劃:項(xiàng)目概要計(jì)劃、里程碑計(jì)劃、項(xiàng)目控制計(jì)劃、產(chǎn)品控制計(jì)劃、驗(yàn)證計(jì)劃、運(yùn)行維護(hù)計(jì)劃 ? 堅(jiān)持進(jìn)行階段評(píng)審 大部分錯(cuò)誤是在編碼之前造成的 錯(cuò)誤發(fā)現(xiàn)與改正得越晚,所需付出的代價(jià)越高。 目前主要實(shí)行基準(zhǔn)配置管理:基準(zhǔn)配置是指經(jīng)過(guò)階段評(píng)審后的軟件配置成分,如各個(gè)階段產(chǎn)生的文檔或程序代碼。 ? 采用現(xiàn)代程序設(shè)計(jì)技術(shù) 實(shí)踐表明:采用先進(jìn)的技術(shù)既可提高軟件開(kāi)發(fā)的效率,又可提高軟件維護(hù)的效率。 根據(jù)軟件開(kāi)發(fā)項(xiàng)目 的總目標(biāo)及完成期限,規(guī)定開(kāi)發(fā)組織的責(zé)任和產(chǎn)品標(biāo)準(zhǔn),使所得的結(jié)果能夠清楚地審查 ? 開(kāi)發(fā)小組的人員應(yīng)該少而精 開(kāi)發(fā)小組人員的素質(zhì)和數(shù)量是影響軟件產(chǎn)品質(zhì)量和開(kāi)發(fā)效率的重要因素。 ? 承認(rèn)不斷改進(jìn)軟件
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1