亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        C語(yǔ)言編譯器的設(shè)計(jì)與實(shí)現(xiàn)

        2014-09-30 06:43:24徐冰楠
        關(guān)鍵詞:詞法編譯器語(yǔ)法

        徐冰楠

        (天津工業(yè)大學(xué)計(jì)算機(jī)科學(xué)與軟件學(xué)院,天津 300387)

        一個(gè)編譯程序的重要性體現(xiàn)在它使得多數(shù)計(jì)算機(jī)用戶不必考慮與機(jī)器有關(guān)的繁瑣細(xì)節(jié),使程序員和程序設(shè)計(jì)專家獨(dú)立于機(jī)器,這對(duì)于當(dāng)今機(jī)器的數(shù)量和種類持續(xù)不斷地增長(zhǎng)的年代尤為重要。

        1.研究背景

        C語(yǔ)言是在20世紀(jì)70年代初問世的,但目前仍舊沒有一個(gè)完整的標(biāo)準(zhǔn)C語(yǔ)言,后由美國(guó)國(guó)家標(biāo)準(zhǔn)學(xué)會(huì)制定了一個(gè)C語(yǔ)言標(biāo)準(zhǔn)。C語(yǔ)言屬于一種結(jié)構(gòu)化語(yǔ)言,易于調(diào)試、層次清晰、便于維護(hù),能夠按照模塊化方式組織程序。在實(shí)際應(yīng)用中,C語(yǔ)言的處理能力和表現(xiàn)能力極強(qiáng),既有豐富的數(shù)據(jù)類型和運(yùn)算符,便于各類復(fù)雜數(shù)據(jù)結(jié)構(gòu)的實(shí)現(xiàn),又可以實(shí)現(xiàn)內(nèi)存物理地址的直接訪問,方便于位一級(jí)的操作。在計(jì)算機(jī)系統(tǒng)中,C語(yǔ)言能夠?qū)崿F(xiàn)對(duì)系統(tǒng)硬件的操作,集低級(jí)語(yǔ)言與高級(jí)語(yǔ)言為一體,同時(shí)還可以應(yīng)用于軟件的開發(fā)。另外,C語(yǔ)言還具有較高的可移植性、高效率等優(yōu)點(diǎn),目前已經(jīng)能夠廣泛應(yīng)用于各型各類的計(jì)算機(jī)中。

        2.C語(yǔ)言編譯器前端設(shè)計(jì)

        編譯是從源代碼到能直接被計(jì)算或者虛擬機(jī)執(zhí)行的目標(biāo)代碼的翻譯過程。一般而言,編譯器包含著入口點(diǎn)的地址和名字、及外部調(diào)用機(jī)器代碼。編譯器是程序員使用的關(guān)鍵工具,以下針對(duì)編譯器的前端設(shè)計(jì)進(jìn)行具體的分析:

        (1)詞法分析。這個(gè)階段主要是根據(jù)相應(yīng)的詞法規(guī)則,將源程序中的各個(gè)記號(hào)一一標(biāo)記出來,其中,每一個(gè)記號(hào)所代表著一類的單詞,通常情況下,主要涉及到的記號(hào)常見的有標(biāo)識(shí)符、關(guān)鍵字、特殊符號(hào)、字面量等等,利用詞法分析器,輸入源程序,輸出識(shí)別記號(hào)符,最終將字號(hào)流轉(zhuǎn)化為相應(yīng)的單詞。

        (2)語(yǔ)法分析。對(duì)于語(yǔ)法分析,在實(shí)際應(yīng)用時(shí),主要根據(jù)相應(yīng)的語(yǔ)法規(guī)則而將記號(hào)中的結(jié)構(gòu)一一標(biāo)識(shí)出,如句子、短語(yǔ)等,并且在此基礎(chǔ)上,構(gòu)造出能夠準(zhǔn)確地反映此結(jié)構(gòu)的語(yǔ)法樹。

        (3)語(yǔ)義分析。在這個(gè)過程中,主要是根據(jù)語(yǔ)法規(guī)則實(shí)施語(yǔ)法單元的靜態(tài)語(yǔ)義檢查,比如轉(zhuǎn)換、類型檢查等,其最為根本的目的就是可以保證其在語(yǔ)法結(jié)構(gòu)上的合法性。

        3.C語(yǔ)言編譯器總體設(shè)計(jì)

        在實(shí)際工作中,要想完成一個(gè)完美的編譯器是一項(xiàng)較為復(fù)雜的事情,要了解語(yǔ)法的構(gòu)成原理,要靈活掌握C語(yǔ)言語(yǔ)法,要考慮到C語(yǔ)言代碼的靈活用法,具體主要從以下幾個(gè)階段來完成:

        (1)詞法分析

        在C語(yǔ)言程序中,詞法分析作為編譯的第一個(gè)階段,又可以被稱之為掃描器,其最為主要的任務(wù)和目標(biāo)就是將源程序中的各個(gè)字符連接起來,將其中的單詞識(shí)別出來,與此同時(shí),還要轉(zhuǎn)換成為相應(yīng)的內(nèi)部編碼,從而更好地應(yīng)用于語(yǔ)法分析。一般情況下,單詞符號(hào)的內(nèi)部編碼主要采用二元式來表示,在分析時(shí),主要涉及到的單詞類別有二進(jìn)制、單詞之值、分隔符、運(yùn)算符的編碼等,總體上講,在計(jì)算機(jī)工作時(shí),掃描器主要用于完成以下的目標(biāo)和任務(wù):將注釋刪除;將源程序中的各個(gè)符號(hào)和單詞識(shí)別出來,轉(zhuǎn)換為相應(yīng)的內(nèi)部編碼形式;將無用的回車字符、空白字符刪除;及時(shí)檢查報(bào)告中存在的錯(cuò)誤,及時(shí)進(jìn)行語(yǔ)法檢查。

        另外,針對(duì)以上工程流程,在進(jìn)行一些語(yǔ)法程序詞法分析時(shí),需要登錄識(shí)別出的標(biāo)志符。從工作方式角度來分析,編譯流程與語(yǔ)法屬于兩種接口方式,一種是主要運(yùn)用詞法分析進(jìn)行子程序的分析,能夠有效地運(yùn)用程序進(jìn)行調(diào)用處理,當(dāng)需要一個(gè)新單詞時(shí),就調(diào)用一次子程序,且在調(diào)用的過程中,還會(huì)相應(yīng)地出現(xiàn)一個(gè)具有獨(dú)立意義的單詞;一種是采用詞法分析對(duì)輸出的結(jié)果進(jìn)行分析,將其放置于中間文件上,同時(shí)作為一種輸入進(jìn)行程序分析。若是從功能上講,主要就是將相應(yīng)的字符源程序進(jìn)行轉(zhuǎn)換處理,從而變成單詞串的形式。

        (2)語(yǔ)義分析

        將編譯程序轉(zhuǎn)換為一種內(nèi)部表現(xiàn)形式后,我們將該種內(nèi)部表現(xiàn)形式稱之為中間語(yǔ)言或者是中間代碼,它含義明確、結(jié)構(gòu)簡(jiǎn)單,屬于一種記號(hào)系統(tǒng)。比如一些編譯程序,基本上沒有中間代碼,但是為了在實(shí)際應(yīng)用中,確保機(jī)器的獨(dú)立運(yùn)行,易于實(shí)現(xiàn)目標(biāo)代碼的優(yōu)化,在許多的編譯程序中均設(shè)置了中間語(yǔ)言。這種中間語(yǔ)言介于機(jī)器語(yǔ)言和源程序語(yǔ)言中,程序相對(duì)復(fù)雜,而C語(yǔ)言編譯器卻在很大程度上改變以上現(xiàn)狀,其語(yǔ)義分析和語(yǔ)法分析相對(duì)成熟,理論和算法比較完善,可仍舊存在的問題是沒有公認(rèn)的形式系統(tǒng),中間代碼仍舊接近于形式化的方法。

        (3)語(yǔ)法分析

        語(yǔ)法分析主要是以單詞串形式的源程序作為分析與輸入對(duì)象,其最為根本的目標(biāo)和任務(wù)就是為了以設(shè)計(jì)語(yǔ)言的語(yǔ)法規(guī)則為標(biāo)準(zhǔn),對(duì)源程序的語(yǔ)法結(jié)構(gòu)進(jìn)行具體的分析,根據(jù)設(shè)計(jì)語(yǔ)言的語(yǔ)法規(guī)則,對(duì)組成這些源程序的語(yǔ)法成分進(jìn)行分析,如函數(shù)、下標(biāo)變量、各種程序語(yǔ)句、各種表達(dá)式等等,并且要通過正確性的語(yǔ)法檢查,將中間代碼進(jìn)行階段處理。當(dāng)前對(duì)于語(yǔ)法的分析主要包括兩大類:一類是自頂向下,一種是自底向上。

        ①自頂向下

        在這里試圖設(shè)定一個(gè)輸入串,從文法進(jìn)行處理,構(gòu)成一棵語(yǔ)法樹,自下而下進(jìn)行構(gòu)造,若是成功,則文法可以成句;若是沒有成功,則不能成句。與此同時(shí),進(jìn)行語(yǔ)法分析,通常還需要解決相關(guān)的障礙問題,具體主要體現(xiàn)在以下方面:一是采用最左推導(dǎo)處理,確保方法中非終結(jié)符號(hào)的傳遞,避免語(yǔ)法進(jìn)入循環(huán)狀態(tài);二是對(duì)符號(hào)串進(jìn)行配置處理,本質(zhì)上講,文法所產(chǎn)生的選式屬于一個(gè)不斷試控的過程,因此,必然會(huì)出現(xiàn)回溯問題,為此就會(huì)導(dǎo)致分析效率下降。因此,為了實(shí)現(xiàn)語(yǔ)法分析,則要對(duì)程序設(shè)計(jì)語(yǔ)言及其相關(guān)的文法進(jìn)行分析,從而有效地消除回溯和遞歸現(xiàn)象。

        ②自底向上

        對(duì)于這種形式的語(yǔ)法分析,同樣需要給定相應(yīng)的輸入串,運(yùn)用相應(yīng)的文法進(jìn)行處理,采用歸約法試圖去構(gòu)成語(yǔ)法樹,一般情況主要采用最左歸納法進(jìn)行處理,以實(shí)現(xiàn)自底向上的分析,將輸入符號(hào)進(jìn)行逐個(gè)的推入處理,并對(duì)相應(yīng)的產(chǎn)生式左部進(jìn)行替換處理,以有效地完成一次歸約,但是在歸約時(shí),為了得到更好的頂,則要對(duì)形成的新的句柄進(jìn)行處理,反之,若是處理不達(dá)標(biāo),那么則要重復(fù)上述過程,從而完成最終的歸約。但是要注意的一點(diǎn)是根據(jù)需要進(jìn)行了歸約處理,必然存在著相應(yīng)語(yǔ)法錯(cuò)誤,那么可以將其中全部輸入的符號(hào)刪除,改變上述格局,進(jìn)行移進(jìn)和歸約分析,并且在此基礎(chǔ)上,不斷地尋找一個(gè)相應(yīng)的策略,從而形成有效的語(yǔ)法分析方法。

        (4)類型檢查

        所謂類型檢查,就是通過給源程序設(shè)定一個(gè)表達(dá)式,根據(jù)類型表達(dá)式設(shè)置一組相應(yīng)的規(guī)則,將其作為源語(yǔ)言的系統(tǒng)。類型檢查的功能和任務(wù)就是能夠準(zhǔn)確地發(fā)現(xiàn)程序中的錯(cuò)誤功能,如果目標(biāo)代碼既可以保持原有的元素類型,同時(shí)也可對(duì)元素值進(jìn)行動(dòng)態(tài)檢查,更為重要的是可以避免源程序靜態(tài)錯(cuò)誤的發(fā)生。

        4.功能的實(shí)現(xiàn)

        基于C語(yǔ)言編譯器的開發(fā)在可行性分析的基礎(chǔ)上,進(jìn)行深入、全面的分析,為此,在這里對(duì)C語(yǔ)言的運(yùn)行情況和編譯原理進(jìn)行具體的分析,具體的功能流程圖如圖1所示:

        圖1 C語(yǔ)言編譯器流程圖

        整個(gè)C語(yǔ)言框架可以說是整個(gè)編譯器的前端核心,也是整個(gè)前端的入口點(diǎn),因此,對(duì)于本身的不主動(dòng)符號(hào),所有動(dòng)作均借助于Visual C++6.0,將其作為一個(gè)信息相互交互的過程,比如在編譯時(shí),Visual C++6.0的功能不能滿足要求,可以對(duì)Visual Studio的開發(fā)環(huán)境進(jìn)行具體的分析,并且結(jié)合目前最流行的Windows平臺(tái)應(yīng)用程序開發(fā)環(huán)境,對(duì)集成開發(fā)環(huán)境(IDE)的界面進(jìn)行重新設(shè)計(jì)和組織,使得整個(gè)編譯器的過程變得更加簡(jiǎn)單明了。與此同時(shí),對(duì)于信息的處理和包裝,還可以應(yīng)用Visual Studio 2010、NET Framework 4.0、Microsoft Visual Studio 2010 CTP(Community Technology Preview--CTP)提供一個(gè)相應(yīng)的規(guī)約式,以支持開發(fā)面向Windows的應(yīng)用程序,其大致的過程包括符號(hào)信息的處理、編譯器的具體動(dòng)作、信息代碼的提供等,結(jié)合Microsoft SQL Server、IBM DB2和Oracle數(shù)據(jù)庫(kù),以完成更高層的數(shù)據(jù)處理與包裝,以下通過具體的事例來說明規(guī)約式動(dòng)作的信息提取:

        改程序改對(duì)后運(yùn)行結(jié)果是327893.2789e+006A,改完后的代碼:

        通過以上編譯,以實(shí)現(xiàn)一個(gè)符號(hào)項(xiàng),加上每一個(gè)符號(hào)項(xiàng)各不相同,既可以保證類型的相同,又可以保證信息類別的多樣化,最后通過與框架進(jìn)行整合處理,以提供必要的機(jī)制,將其中的字符流轉(zhuǎn)換成為內(nèi)部代碼,排除符號(hào)代碼外,將其本身所攜帶的信息進(jìn)行封裝,并與特定的結(jié)構(gòu)同符號(hào)一起返回處理。

        5.結(jié)束語(yǔ)

        整個(gè)C語(yǔ)言編譯器涉及到的主要工作是程序的運(yùn)行以及支持設(shè)計(jì),要針對(duì)數(shù)據(jù)流和控制流進(jìn)行優(yōu)化分析,將基于中間代碼的數(shù)據(jù)流結(jié)果和控制流結(jié)果進(jìn)行科學(xué)處理,確保最后目標(biāo)的生成。與此同時(shí),整個(gè)設(shè)計(jì)過程中,框架作為運(yùn)行支持的亮點(diǎn)環(huán)節(jié),由于缺乏統(tǒng)一的標(biāo)準(zhǔn),還需要針對(duì)特定的架構(gòu)設(shè)計(jì),設(shè)計(jì)出一種程序調(diào)度開銷小、語(yǔ)言特點(diǎn)簡(jiǎn)潔、代碼生成方便的運(yùn)行環(huán)境給予支持。

        [1]李松樹,姚益平,周家和.YH-2C語(yǔ)言優(yōu)化編譯器的設(shè)計(jì)[J].計(jì)算機(jī)工程與科學(xué),2011,(04):70-74.

        [2]高陶.面向測(cè)控系統(tǒng)的MCL語(yǔ)言編譯器設(shè)計(jì)[D].電子科技大學(xué),2009.

        [3]吳江.SQL語(yǔ)言預(yù)編譯器的構(gòu)架——基于Linux操作系統(tǒng)[D].北京化工大學(xué),2012.

        [4]王昭順,楊樹森,李周芳.嵌入式C02語(yǔ)言編譯器的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)應(yīng)用研究,2011,(07):96-98.

        [5]甄真.面向列數(shù)據(jù)庫(kù)的SQL語(yǔ)言編譯器設(shè)計(jì)與優(yōu)化[D].華南理工大學(xué),2012.

        [6]姜娜,孔浩.一種支持軟件演化過程描述語(yǔ)言的編譯器的設(shè)計(jì)分析[J].綿陽(yáng)師范學(xué)院學(xué)報(bào),2013,(02):99-102.

        [7]李穎,胡明.基于C語(yǔ)言實(shí)現(xiàn)的IDL編譯器[J].計(jì)算機(jī)技術(shù)與發(fā)展,2013,(03):5-9.

        [8]鄭陽(yáng),付麗君,黃志鋼.用于PLC的華P語(yǔ)言編譯器設(shè)計(jì)與實(shí)現(xiàn)[J].沈陽(yáng)理工大學(xué)學(xué)報(bào),2009,(05):30-33.

        [9]王暉,胡寶成,何華燦,王忠,沈緒榜.LSMPP數(shù)據(jù)并行C語(yǔ)言編譯器實(shí)現(xiàn)的研究[J].微電子學(xué)與計(jì)算機(jī),2010,(06):1-5.

        [10]史巖,李蜀瑜,丘征,陳長(zhǎng)勝.CoSy C語(yǔ)言編譯器程序緩沖區(qū)溢出研究[J].計(jì)算機(jī)技術(shù)與發(fā)展,2012,(06):93-96.

        猜你喜歡
        詞法編譯器語(yǔ)法
        詞法 名詞、代詞和冠詞
        基于相異編譯器的安全計(jì)算機(jī)平臺(tái)交叉編譯環(huán)境設(shè)計(jì)
        跟蹤導(dǎo)練(二)4
        KEYS
        Keys
        Book 5 Unit 1~Unit 3語(yǔ)法鞏固練習(xí)
        應(yīng)用于詞法分析器的算法分析優(yōu)化
        談對(duì)外漢語(yǔ)“詞法詞”教學(xué)
        通用NC代碼編譯器的設(shè)計(jì)與實(shí)現(xiàn)
        2010年高考英語(yǔ)“相似”考題例析
        国产乱码精品一区二区三区久久| 欧美激情中文字幕在线一区二区| 亚洲av激情久久精品人| 中文字幕中文字幕777| 国产v片在线播放免费无码| 国产在线精品一区二区| 无码av一区在线观看| 国产一区二区三区小向美奈子| 亚洲 日韩 激情 无码 中出| 亚洲一线二线三线写真| 精品一区二区三区四区少妇| 91中文在线九色视频| 国产精品久久久久久av| 国产精品白浆在线观看无码专区| 美女高潮流白浆视频在线观看| 小黄片免费在线播放观看| 国内精品久久久久久99| 免费男人下部进女人下部视频| 欧美精品一本久久男人的天堂| 激情五月天在线观看视频| 人妻 日韩 欧美 综合 制服| 国产又爽又黄的激情精品视频| 中文字幕日韩人妻在线| av日韩一区二区三区四区| 日韩欧群交p片内射中文| 国产人成亚洲第一网站在线播放| 青青草是针对华人绿色超碰| 久久久噜噜噜久久中文福利| 蜜臀av一区二区| 网友自拍人妻一区二区三区三州| 成人大片免费视频播放一级| 天天躁日日躁狠狠久久| 亚洲av日韩aⅴ无码电影 | 偷柏自拍亚洲综合在线| av高清在线不卡直播| 88久久精品无码一区二区毛片| 甲状腺囊实性结节三级| 日本视频一区二区三区在线| 久久亚洲av无码西西人体| 亚洲婷婷丁香激情| 在线亚洲精品中文字幕美乳色|