国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

淺談編譯程序編譯過(guò)程

2018-04-27 11:51劉浩甜河南大學(xué)軟件學(xué)院
數(shù)碼世界 2018年4期
關(guān)鍵詞:詞法語(yǔ)義語(yǔ)法

劉浩甜 河南大學(xué)軟件學(xué)院

1 編譯程序

計(jì)算機(jī)語(yǔ)言之所以能夠由單一的機(jī)器語(yǔ)言發(fā)展到現(xiàn)如今的數(shù)千種高級(jí)語(yǔ)言,是由于有了編譯技術(shù)。編譯技術(shù)的核心思想就是把同樣的邏輯結(jié)構(gòu)和思想從一種語(yǔ)言表示轉(zhuǎn)化為另外一種語(yǔ)言表示。編譯程序就是把一種高級(jí)語(yǔ)言(源語(yǔ)言)書(shū)寫(xiě)的程序轉(zhuǎn)換成與之等價(jià)的一種低級(jí)語(yǔ)言(目標(biāo)語(yǔ)言)書(shū)寫(xiě)的程序。

圖1 編譯程序總框

2 編譯過(guò)程

把某種高級(jí)語(yǔ)言書(shū)寫(xiě)的源程序轉(zhuǎn)換成與之等價(jià)的機(jī)器可識(shí)別的語(yǔ)言,這個(gè)轉(zhuǎn)換過(guò)程叫做編譯過(guò)程。從計(jì)算機(jī)系統(tǒng)輸入源程序到輸出目標(biāo)程序?yàn)橹沟恼麄€(gè)過(guò)程大致可以劃分為五個(gè)階段:詞法分析,語(yǔ)法分析、語(yǔ)義分析與中間代碼產(chǎn)生、優(yōu)化、目標(biāo)代碼生成。除了這五個(gè)階段一個(gè)完整的編譯程序還包括表格管理和出錯(cuò)處理。

2.1 詞法分析

詞法分析是編譯程序進(jìn)行翻譯的第一個(gè)階段,詞法分析是一種線性分析。它的任務(wù)是從左至右逐個(gè)字符的對(duì)源程序進(jìn)行掃描,產(chǎn)生一個(gè)個(gè)的單詞符號(hào)如基本字(begin,end,if,for,while等)、標(biāo)識(shí)符、常量、算符和界符(標(biāo)點(diǎn)符號(hào)、左右括號(hào)等等)。把作為字符串的源程序改造成為單詞符號(hào)串的中間程序。它以程序設(shè)計(jì)語(yǔ)言編制的源程序作為輸入,以單詞序列作為輸出。分詞過(guò)程可以通過(guò)編制程序自動(dòng)完成,我們通常稱這個(gè)分詞程序?yàn)樵~法分析器。詞法分析器分析的源程序可以是現(xiàn)有的各類程序設(shè)計(jì)語(yǔ)言源程序也可以是人為給定的模型語(yǔ)言的源程序。

2.2 語(yǔ)法分析

語(yǔ)法分析是編譯過(guò)程的第二個(gè)階段,語(yǔ)法分析是一種層次結(jié)構(gòu)的分析,語(yǔ)法分析的任務(wù)是在詞法分析的基礎(chǔ)上,根據(jù)語(yǔ)言的語(yǔ)法規(guī)則把單詞符號(hào)串分解成各類語(yǔ)法單位(語(yǔ)法范疇),如“短語(yǔ)”、“子句”、“句子” (“語(yǔ)句” )、“程序段”和“程序”。通過(guò)語(yǔ)法分解,確定整個(gè)輸入串是否構(gòu)成一個(gè)語(yǔ)法上的正確“程序”。語(yǔ)法分析所依循的是語(yǔ)言的語(yǔ)法規(guī)則。語(yǔ)法分析通常使用上下文無(wú)關(guān)文法描述。例如,符號(hào)串X=1+2表示成如圖2所示的語(yǔ)法樹(shù)。

圖2 語(yǔ)法數(shù)

2.3 語(yǔ)義分析與中間代碼產(chǎn)生階段

緊接在詞法分析和語(yǔ)法分析后編譯程序要做的就是進(jìn)行語(yǔ)義分析,程序的語(yǔ)義即它的“意思”,離開(kāi)語(yǔ)義,語(yǔ)言不過(guò)是一堆符號(hào)的集合,本階段的任務(wù)就是對(duì)語(yǔ)法分析所識(shí)別出的各類語(yǔ)法范疇進(jìn)行分析,并進(jìn)行初步翻譯(產(chǎn)生中間代碼)。程序的語(yǔ)義確定程序的運(yùn)行,但是大多數(shù)的程序設(shè)計(jì)語(yǔ)言都具有在執(zhí)行之前被確定的特征,這些特征被稱作靜態(tài)語(yǔ)義。首先對(duì)每種語(yǔ)法范疇進(jìn)行靜態(tài)語(yǔ)義檢查,一般的程序設(shè)計(jì)語(yǔ)言的典型靜態(tài)語(yǔ)義包括聲明和類型檢查。如語(yǔ)義分析程序按照語(yǔ)言的類型檢查與每個(gè)運(yùn)算符相關(guān)的運(yùn)算對(duì)象,看它們的類型是否合法如果語(yǔ)義正確則進(jìn)行中間代碼的翻譯,在不同語(yǔ)言中有著形式完全相同的語(yǔ)法單位但它們的含義卻不相同,語(yǔ)義分析階段所依循的是所用語(yǔ)言的語(yǔ)義規(guī)則。通常使用屬性文法描述語(yǔ)義規(guī)則。在進(jìn)行了語(yǔ)法分析和語(yǔ)義分析階段的工作之后,有的編譯程序?qū)⒃闯绦蜃兂梢环N內(nèi)部表示的形式,這種內(nèi)部表示形式叫做中間語(yǔ)言或中間代碼,所謂“中間代碼”是一種結(jié)構(gòu)簡(jiǎn)單、含義明確的記號(hào)系統(tǒng),這種記號(hào)系統(tǒng)可以設(shè)計(jì)為多種多樣的形式,重要的設(shè)計(jì)原則為兩點(diǎn):一是容易生成;二是容易將它翻譯為目標(biāo)代碼。很多編譯程序采用了一種近似“三地址指令”的四元式中間代碼,這種四元式的形式為:運(yùn)算符、左操作樹(shù)、右操作樹(shù)、結(jié)果。

2.4 優(yōu)化

此階段的任務(wù)是就是對(duì)前階段產(chǎn)生的中間代碼進(jìn)行加工變換,以期在最后階段產(chǎn)生出占用空間更少、運(yùn)行速度更快的目標(biāo)代碼,即省時(shí)間和省空間。

2.5 目標(biāo)代碼生成

本階段實(shí)現(xiàn)了最后的翻譯,把經(jīng)過(guò)優(yōu)化后的中間代碼變換成可重定位的機(jī)器代碼或匯編語(yǔ)言代碼。這階段的工作有賴于硬件系統(tǒng)結(jié)構(gòu)和機(jī)器指令含義。

2.6 符號(hào)表處理程序

編譯程序在工作過(guò)程中需保持一系列表格,以登記源程序的各類信息和編譯各階段的進(jìn)展?fàn)顩r。在所使用的表格中,最重要的是符號(hào)表,如標(biāo)識(shí)符的各種屬性就是在編譯的各個(gè)階段填入符號(hào)表的。

2.7 出錯(cuò)處理

編譯程序不僅能對(duì)書(shū)寫(xiě)正確的程序進(jìn)行翻譯,也應(yīng)能對(duì)出現(xiàn)在源程序中的錯(cuò)誤進(jìn)行處理。即源程序中若有錯(cuò)誤,編譯程序應(yīng)設(shè)法發(fā)現(xiàn)錯(cuò)誤,并把有關(guān)信息報(bào)告給用戶,這就是出錯(cuò)處理程序的任務(wù)

[1]編譯技術(shù)研究與逆向工程實(shí)踐,胡燕京,李彩霞,周子琛,羅海寧 《現(xiàn)代電子技術(shù)》2007年第16期總第255期

[2]編譯技術(shù)的發(fā)展及應(yīng)用,張亞娟,馮靈霞,王學(xué)春 軟 件 導(dǎo) 刊2010年9月

[3]高級(jí)語(yǔ)言中編譯程序編譯過(guò)程淺析,朱志平,渭南師范學(xué)院學(xué)報(bào)2001年3月

[4]淺談高級(jí)語(yǔ)言的執(zhí)行方式——編譯過(guò)程,趙麗,齊興斌,電力學(xué)報(bào) 2008年6月

[5]陳火旺,劉春林.程序設(shè)計(jì)語(yǔ)言編譯原理[M].北京:國(guó)防工業(yè)出版社,2000年 2月

猜你喜歡
詞法語(yǔ)義語(yǔ)法
真實(shí)場(chǎng)景水下語(yǔ)義分割方法及數(shù)據(jù)集
跟蹤導(dǎo)練(二)4
應(yīng)用于詞法分析器的算法分析優(yōu)化
參考答案
“吃+NP”的語(yǔ)義生成機(jī)制研究
情感形容詞‘うっとうしい’、‘わずらわしい’、‘めんどうくさい’的語(yǔ)義分析
漢語(yǔ)依憑介詞的語(yǔ)義范疇
2010年高考英語(yǔ)“相似”考題例析