999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

C語言編譯器的設計與實現

2014-09-30 06:43:24徐冰楠
吉林廣播電視大學學報 2014年4期
關鍵詞:符號單詞語言

徐冰楠

(天津工業大學計算機科學與軟件學院,天津 300387)

一個編譯程序的重要性體現在它使得多數計算機用戶不必考慮與機器有關的繁瑣細節,使程序員和程序設計專家獨立于機器,這對于當今機器的數量和種類持續不斷地增長的年代尤為重要。

1.研究背景

C語言是在20世紀70年代初問世的,但目前仍舊沒有一個完整的標準C語言,后由美國國家標準學會制定了一個C語言標準。C語言屬于一種結構化語言,易于調試、層次清晰、便于維護,能夠按照模塊化方式組織程序。在實際應用中,C語言的處理能力和表現能力極強,既有豐富的數據類型和運算符,便于各類復雜數據結構的實現,又可以實現內存物理地址的直接訪問,方便于位一級的操作。在計算機系統中,C語言能夠實現對系統硬件的操作,集低級語言與高級語言為一體,同時還可以應用于軟件的開發。另外,C語言還具有較高的可移植性、高效率等優點,目前已經能夠廣泛應用于各型各類的計算機中。

2.C語言編譯器前端設計

編譯是從源代碼到能直接被計算或者虛擬機執行的目標代碼的翻譯過程。一般而言,編譯器包含著入口點的地址和名字、及外部調用機器代碼。編譯器是程序員使用的關鍵工具,以下針對編譯器的前端設計進行具體的分析:

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

(2)語法分析。對于語法分析,在實際應用時,主要根據相應的語法規則而將記號中的結構一一標識出,如句子、短語等,并且在此基礎上,構造出能夠準確地反映此結構的語法樹。

(3)語義分析。在這個過程中,主要是根據語法規則實施語法單元的靜態語義檢查,比如轉換、類型檢查等,其最為根本的目的就是可以保證其在語法結構上的合法性。

3.C語言編譯器總體設計

在實際工作中,要想完成一個完美的編譯器是一項較為復雜的事情,要了解語法的構成原理,要靈活掌握C語言語法,要考慮到C語言代碼的靈活用法,具體主要從以下幾個階段來完成:

(1)詞法分析

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

另外,針對以上工程流程,在進行一些語法程序詞法分析時,需要登錄識別出的標志符。從工作方式角度來分析,編譯流程與語法屬于兩種接口方式,一種是主要運用詞法分析進行子程序的分析,能夠有效地運用程序進行調用處理,當需要一個新單詞時,就調用一次子程序,且在調用的過程中,還會相應地出現一個具有獨立意義的單詞;一種是采用詞法分析對輸出的結果進行分析,將其放置于中間文件上,同時作為一種輸入進行程序分析。若是從功能上講,主要就是將相應的字符源程序進行轉換處理,從而變成單詞串的形式。

(2)語義分析

將編譯程序轉換為一種內部表現形式后,我們將該種內部表現形式稱之為中間語言或者是中間代碼,它含義明確、結構簡單,屬于一種記號系統。比如一些編譯程序,基本上沒有中間代碼,但是為了在實際應用中,確保機器的獨立運行,易于實現目標代碼的優化,在許多的編譯程序中均設置了中間語言。這種中間語言介于機器語言和源程序語言中,程序相對復雜,而C語言編譯器卻在很大程度上改變以上現狀,其語義分析和語法分析相對成熟,理論和算法比較完善,可仍舊存在的問題是沒有公認的形式系統,中間代碼仍舊接近于形式化的方法。

(3)語法分析

語法分析主要是以單詞串形式的源程序作為分析與輸入對象,其最為根本的目標和任務就是為了以設計語言的語法規則為標準,對源程序的語法結構進行具體的分析,根據設計語言的語法規則,對組成這些源程序的語法成分進行分析,如函數、下標變量、各種程序語句、各種表達式等等,并且要通過正確性的語法檢查,將中間代碼進行階段處理。當前對于語法的分析主要包括兩大類:一類是自頂向下,一種是自底向上。

①自頂向下

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

②自底向上

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

(4)類型檢查

所謂類型檢查,就是通過給源程序設定一個表達式,根據類型表達式設置一組相應的規則,將其作為源語言的系統。類型檢查的功能和任務就是能夠準確地發現程序中的錯誤功能,如果目標代碼既可以保持原有的元素類型,同時也可對元素值進行動態檢查,更為重要的是可以避免源程序靜態錯誤的發生。

4.功能的實現

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

圖1 C語言編譯器流程圖

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

改程序改對后運行結果是327893.2789e+006A,改完后的代碼:

通過以上編譯,以實現一個符號項,加上每一個符號項各不相同,既可以保證類型的相同,又可以保證信息類別的多樣化,最后通過與框架進行整合處理,以提供必要的機制,將其中的字符流轉換成為內部代碼,排除符號代碼外,將其本身所攜帶的信息進行封裝,并與特定的結構同符號一起返回處理。

5.結束語

整個C語言編譯器涉及到的主要工作是程序的運行以及支持設計,要針對數據流和控制流進行優化分析,將基于中間代碼的數據流結果和控制流結果進行科學處理,確保最后目標的生成。與此同時,整個設計過程中,框架作為運行支持的亮點環節,由于缺乏統一的標準,還需要針對特定的架構設計,設計出一種程序調度開銷小、語言特點簡潔、代碼生成方便的運行環境給予支持。

[1]李松樹,姚益平,周家和.YH-2C語言優化編譯器的設計[J].計算機工程與科學,2011,(04):70-74.

[2]高陶.面向測控系統的MCL語言編譯器設計[D].電子科技大學,2009.

[3]吳江.SQL語言預編譯器的構架——基于Linux操作系統[D].北京化工大學,2012.

[4]王昭順,楊樹森,李周芳.嵌入式C02語言編譯器的設計與實現[J].計算機應用研究,2011,(07):96-98.

[5]甄真.面向列數據庫的SQL語言編譯器設計與優化[D].華南理工大學,2012.

[6]姜娜,孔浩.一種支持軟件演化過程描述語言的編譯器的設計分析[J].綿陽師范學院學報,2013,(02):99-102.

[7]李穎,胡明.基于C語言實現的IDL編譯器[J].計算機技術與發展,2013,(03):5-9.

[8]鄭陽,付麗君,黃志鋼.用于PLC的華P語言編譯器設計與實現[J].沈陽理工大學學報,2009,(05):30-33.

[9]王暉,胡寶成,何華燦,王忠,沈緒榜.LSMPP數據并行C語言編譯器實現的研究[J].微電子學與計算機,2010,(06):1-5.

[10]史巖,李蜀瑜,丘征,陳長勝.CoSy C語言編譯器程序緩沖區溢出研究[J].計算機技術與發展,2012,(06):93-96.

猜你喜歡
符號單詞語言
學符號,比多少
幼兒園(2021年6期)2021-07-28 07:42:14
語言是刀
文苑(2020年4期)2020-05-30 12:35:30
單詞連一連
“+”“-”符號的由來
看圖填單詞
讓語言描寫搖曳多姿
變符號
累積動態分析下的同聲傳譯語言壓縮
我有我語言
圖的有效符號邊控制數
主站蜘蛛池模板: 呦女精品网站| 91精品视频在线播放| 91精品国产丝袜| 国产精品手机视频一区二区| 欧美三級片黃色三級片黃色1| 99热6这里只有精品| 91系列在线观看| 亚洲精品无码人妻无码| 99精品国产自在现线观看| 国产成人在线无码免费视频| 成人日韩精品| 在线精品亚洲国产| 日本不卡视频在线| 国产一级视频在线观看网站| 99精品福利视频| yjizz视频最新网站在线| 天天做天天爱夜夜爽毛片毛片| 国产无人区一区二区三区 | www.国产福利| a免费毛片在线播放| 亚洲美女一级毛片| 青青热久免费精品视频6| 亚瑟天堂久久一区二区影院| 国产精品妖精视频| 2020极品精品国产 | 久久免费成人| 网友自拍视频精品区| 91口爆吞精国产对白第三集| 一级高清毛片免费a级高清毛片| 国产精品久线在线观看| 免费黄色国产视频| 不卡午夜视频| 99精品福利视频| 日本欧美成人免费| 午夜a视频| 亚洲国产精品一区二区第一页免 | 国产乱子伦手机在线| 久热中文字幕在线| 在线观看免费AV网| 亚洲国产一成久久精品国产成人综合| 福利小视频在线播放| 午夜成人在线视频| 免费看av在线网站网址| 喷潮白浆直流在线播放| 日韩精品一区二区三区中文无码| 亚洲人成网站色7799在线播放| 亚洲成AV人手机在线观看网站| 日韩午夜片| 精品1区2区3区| 91麻豆精品国产91久久久久| 国产乱人伦偷精品视频AAA| 国内丰满少妇猛烈精品播| 成年人国产网站| 九九热视频在线免费观看| 强奷白丝美女在线观看| 日韩国产精品无码一区二区三区| 国产在线精品香蕉麻豆| 亚洲欧美自拍视频| 欧美精品啪啪| 深夜福利视频一区二区| 四虎影视无码永久免费观看| 国产精品久久久久久搜索| 婷婷激情五月网| 尤物亚洲最大AV无码网站| 国产午夜福利在线小视频| 国产成人综合日韩精品无码不卡| jizz国产视频| 欧美视频在线第一页| 国产av一码二码三码无码| 亚洲αv毛片| 婷婷久久综合九色综合88| 亚洲成AV人手机在线观看网站| 国产精品中文免费福利| 欧美亚洲国产精品久久蜜芽| 中文字幕无码av专区久久| www中文字幕在线观看| 亚洲欧美日本国产综合在线| 国产一二三区在线| 一级成人a做片免费| 一本大道AV人久久综合| 在线观看亚洲天堂| 欧美一区二区自偷自拍视频|