當前位置:首頁 » 編程軟體 » 編譯方式名詞解釋

編譯方式名詞解釋

發布時間: 2022-04-23 05:30:59

㈠ 名詞解釋編譯程序

編譯程序(Compiler,compiling program)也稱為編譯器,是指把用高級程序設計語言書寫的源程序,翻譯成等價的機器語言格式目標程序的翻譯程序。編譯程序屬於採用生成性實現途徑實現的翻譯程序。它以高級程序設計語言書寫的源程序作為輸入,而以匯編語言或機器語言表示的目標程序作為輸出。編譯出的目標程序通常還要經歷運行階段,以便在運行程序的支持下運行,加工初始數據,算出所需的計算結果。

㈡ 編譯原理 名詞解釋

1、識別源程序中意義獨立的最小單位--單詞
2、不確定的有窮自動機(Nondeterministic Finite Automata)--NFA
3、是指程序—順序執行的語句序列,其中只有一個入口和一個出口,入口就是其中的第—個語句,出口就是其中的最後一個語句--基本塊
4、它把高級語言編寫的源程序翻譯成與之在邏輯上等價的機器語言或匯編語言的目標程序--編譯程序

5、是規則的非空有窮集合--文法
6、確定的有窮自動(Deterministic Finite Automata)--DFA

㈢ 編譯方式和解釋方式有什麼區別

首先,我們編寫的程序現在一般都是用高級語言編寫的,如c/c++
以及面向對象的visual
系列;我們編寫的程序計算機是不能直接執行的,因為計算機只能執行二進製程序.因此要經過一個將我們寫的代碼翻譯成二進制的過程.
完成這個過程一般有兩種方式:1.解釋方式
2.
編譯方式
1.解釋方式是每執行一句就翻譯一句即邊執行邊解釋.這種方式每次運行程序時都要重新翻譯整個程序,效率較低,執行速度慢,如qb,不過現在幾乎沒有人再用這種低效的方式的設計語言了.
2.編譯方式是在程序第一次執行前就先執一個全部的翻譯過程,然後每次執行的時候就可以直接執行這個翻譯好的二進制文件了,這樣的程序只需要翻譯一次,效率明顯要高很多,現在的大多數語言都是這種方式,網頁中的asp.net
採用的也是這種方式.

㈣ 為什麼高級語言中存在編譯和解釋兩種編譯方式

  1. 編譯方式:事先編好的一個叫做編譯程序的機器語言程序放在計算機中。當高級語言編的源程序輸入計算機時,編譯程序就把源程序自動整個地翻譯成用機器指令表示的目標程序。

  2. 解釋方式:事先編好的一個叫做解釋程序的機器語言程序放在計算機中,當高級語言源程序輸入計算機後,解釋程序自動地逐句翻譯源程序,譯一句執行一句。

  3. 因此往往需要特定的平台,由於程序執行的是編譯好的二進制文件,這種編譯一旦完成,那麼就只能在特定平台上運行了:編譯是指將源語言轉化為目標計算機的可執行二進制代碼兩者互有優劣,因此速度比較快(相對下面的解釋)。

  4. 解釋方式:事先編好的一個叫做解釋程序的機器語言程序放在計算機中,當高級語言源程序輸入計算機後,解釋程序自動地逐句翻譯源程序,譯一句執行一句。 可以這么理解,編譯的結果是另外一種語言,而解釋的就是一種中間語言。

㈤ 高級語言中的解釋方式和編譯方式的區別

兩者的區別如下:
解釋方式:程序運行時,取一條指令,將其轉化為機器指令,再執行這條機器指令。這種方式每次運行程序時都要重新翻譯整個程序,效率較低,執行速度慢,如QB,不過現在很少再用這種低效的方式的設計語言了。
編譯方式:程序運行時之前,將程序的所有代碼編譯為機器代碼,再運行這個程序。然後每次執行的時候就可以直接執行這個翻譯好的二進制文件了,這樣的程序只需要翻譯一次,效率明顯要高很多,現在的大多數語言都是這種方式,網頁中的asp.net 採用的也是這種方式。

㈥ 求編譯原理的名詞解釋題

詞法分析(Lexical analysis或Scanning)和詞法分析程序(Lexical analyzer或Scanner)
詞法分析階段是編譯過程的第一個階段。這個階段的任務是從左到右一個字元一個字元地讀入源程序,即對構成源程序的字元流進行掃描然後根據構詞規則識別單詞(也稱單詞符號或符號)。詞法分析程序實現這個任務。詞法分析程序可以使用lex等工具自動生成。

語法分析(Syntax analysis或Parsing)和語法分析程序(Parser)
語法分析是編譯過程的一個邏輯階段。語法分析的任務是在詞法分析的基礎上將單詞序列組合成各類語法短語,如「程序」,「語句」,「表達式」等等.語法分析程序判斷源程序在結構上是否正確.源程序的結構由上下文無關文法描述.

語義分析(Syntax analysis)
語義分析是編譯過程的一個邏輯階段. 語義分析的任務是對結構上正確的源程序進行上下文有關性質的審查, 進行類型審查.例如一個C程序片斷:
int arr[2],b;
b = arr * 10;
源程序的結構是正確的.
語義分析將審查類型並報告錯誤:不能在表達式中使用一個數組變數,賦值語句的右端和左端的類型不匹配.

Lex
一個詞法分析程序的自動生成工具。它輸入描述構詞規則的一系列正規式,然後構建有窮自動機和這個有窮自動機的一個驅動程序,進而生成一個詞法分析程序.

Yacc
一個語法分析程序的自動生成工具。它接受語言的文法,構造一個LALR(1)分析程序.因為它採用語法制導翻譯的思想,還可以接受用C語言描述的語義動作,從而構造一個編譯程序. Yacc 是 Yet another compiler compiler的縮寫.[回頁首]

源語言(Source language)和源程序(Source program)
被編譯程序翻譯的程序稱為源程序,書寫該程序的語言稱為源語言.[回頁首]

目標語言(Object language or Target language)和目標程序(Object program or Target program)
編譯程序翻譯源程序而得到的結果程序稱為目標程序, 書寫該程序的語言稱為目標語言.[回頁首]

中間語言(中間表示)(Intermediate language(representation))
在進行了語法分析和語義分析階段的工作之後,有的編譯程序將源程序變成一種內部表示形式,這種內部表示形式叫做中間語言或中間表示或中間代碼。所謂「中間代碼」是一種結構簡單、含義明確的記號系統,這種記號系統復雜性介於源程序語言和機器語言之間,容易將它翻譯成目標代碼。另外,還可以在中間代碼一級進行與機器無關的優化。

[回頁首]

文法(Grammars)
文法是用於描述語言的語法結構的形式規則。文法G定義為四元組(,,,)。其中為非終結符號(或語法實體,或變數)集;為終結符號集;為產生式(也稱規則)的集合;產生式(規則)是形如或 a ::=b 的(a , b)有序對,其中(∪)且至少含有一個非終結符,而(∪)。,和是非空有窮集。稱作識別符號或開始符號,它是一個非終結符,至少要在一條規則中作為左部出現。
一個文法的例子: G=(={A,R},={0,1} ,={A?0R,A?01,R?A1},=A) [回頁首]
文法分類(A hierarchy of Grammars)
著名語言學家Noam Chomsky定義了四類文法和四種形式語言類,文法的四種類型分別是0型、1型、2型和3型。幾類文法的差別在於對產生式施加不同的限制,分別是:
0型文法(短語結構文法)(phrase structure grammars):
設G=(,,,),如果它的每個產生式是這樣一種結構: (∪) 且至少含有一個非終結符,而(∪),則G是一個0型文法。
1型文法(上下文有關文法)(context-sensitive grammars):
設G=(,,,)為一文法,若中的每一個產生式均滿足|,僅僅 除外,則文法G是1型或上下文有關的。
2型文法(上下文無關文法)(context-free grammars):
設G=(,,,),若P中的每一個產生式滿足:是一非終結符,(∪) 則此文法稱為2型的或上下文無關的。
3型文法(正規文法)(regular grammars):
設G=(,,,),若中的每一個產生式的形式都是A→aB或A→a,其中A和B都是非終結,a是終結符,則G是3型文法或正規文法。
0型文法產生的語言稱為0型語言。
1型文法產生的語言稱為1型語言,也稱作上下文有關語言。
2型文法產生的語言稱為2型語言,也稱作上下文無關語言。
3型文法產生的語言稱為3型語言,也稱作正規語言。

㈦ 計算機高級程序語言的兩種工作方式(解釋方式和編譯方式)的區別

高級語言所編制的程序不能直接被計算機識別,必須經過轉換才能被執行,按轉換方式可
將它們分為兩類:
1.解釋類
執行方式類似於我們日常生活中的「同聲翻譯」,應用程序源代碼一邊由相應語言的解釋器「翻譯」成目標代碼(機器語言),一邊執行,因此效率比較低,而且不能生成可獨立執行的可執行文件,應用程序不能脫離其解釋器,但這種方式比較靈活,可以動態地調整、修改應用程序,典型的解釋型的高級語言有BASIC。
2.編譯類
編譯是指在應用源程序執行之前,就將程序源代碼「翻譯」成目標代碼(機器語言),因此其目標程序可以脫離其語言環境獨立執行,使用比較方便、效率較高。但應用程序一旦需要修改,必須先修改源代碼,再重新編譯生成新的目標文件(*.OBJ)才能執行,只有目標文件而沒有源代碼,修改很不方便。現在大多數的編程語言都是編譯型的,例如Visual C++、Delphi等。

㈧ 「編譯方式」和「解釋方式」的區別

程序員編寫的程序現在一般都是用高級語言編寫的,如c/c++
以及面向對象的visual
系列;這樣編寫的程序計算機是不能直接執行的,因為計算機只能執行二進製程序。因此要經過一個源程序代碼翻譯成二進制的過程。計算機並不能直接地接受和執行用高級語言編寫的源程序,源程序在輸入計算機時,通過「翻譯程序」翻譯成機器語言形式的目標程序,計算機才能識別和執行。這種「翻譯」通常有兩種方式,即編譯方式和解釋方式。
兩者的區別如下:
解釋方式:程序運行時,取一條指令,將其轉化為機器指令,再執行這條機器指令。這種方式每次運行程序時都要重新翻譯整個程序,效率較低,執行速度慢,如QB,不過現在很少再用這種低效的方式的設計語言了。
編譯方式:程序運行時之前,將程序的所有代碼編譯為機器代碼,再運行這個程序。然後每次執行的時候就可以直接執行這個翻譯好的二進制文件了,這樣的程序只需要翻譯一次,效率明顯要高很多,現在的大多數語言都是這種方式,網頁中的asp.net
採用的也是這種方式。
簡單的說,編譯就是全文翻譯,全部翻譯完才執行。解釋就相當於同聲翻譯,邊翻譯邊執行。

㈨ 編譯原理全部的名詞解釋

書上有別那麼懶!。。。。
編譯過程的六個階段:詞法分析,語法分析,語義分析,中間代碼生成,代碼優化,目標代碼生成
解釋程序:把某種語言的源程序轉換成等價的另一種語言程序——目標語言程序,然後再執行目標程序。解釋方式是接受某高級語言的一個語句輸入,進行解釋並控制計算機執行,馬上得到這句的執行結果,然後再接受下一句。
編譯程序:就是指這樣一種程序,通過它能夠將用高級語言編寫的源程序轉換成與之在邏輯上等價的低級語言形式的目標程序(機器語言程序或匯編語言程序)。
解釋程序和編譯程序的根本區別:是否生成目標代碼
句子的二義性(這里的二義性是指語法結構上的。):文法G[S]的一個句子如果能找到兩種不同的最左推導(或最右推導),或者存在兩棵不同的語法樹,則稱這個句子是二義性的。
文法的二義性:一個文法如果包含二義性的句子,則這個文法是二義文法,否則是無二義文法。
LL(1)的含義:(LL(1)文法是無二義的; LL(1)文法不含左遞歸)
第1個L:從左到右掃描輸入串 第2個L:生成的是最左推導
1 :向右看1個輸入符號便可決定選擇哪個產生式
某些非LL(1)文法到LL(1)文法的等價變換: 1. 提取公因子 2. 消除左遞歸
文法符號的屬性:單詞的含義,即與文法符號相關的一些信息。如,類型、值、存儲地址等。
一個屬性文法(attribute grammar)是一個三元組A=(G, V, F)
G:上下文無關文法。
V:屬性的有窮集。每個屬性與文法的一個終結符或非終結符相連。屬性與變數一樣,可以進行計算和傳遞。
F:關於屬性的斷言或謂詞(一組屬性的計算規則)的有窮集。斷言或語義規則與一個產生式相聯,只引用該產生式左端或右端的終結符或非終結符相聯的屬性。
綜合屬性:若產生式左部的單非終結符A的屬性值由右部各非終結符的屬性值決定,則A的屬性稱為綜合屬
繼承屬性:若產生式右部符號B的屬性值是根據左部非終結符的屬性值或者右部其它符號的屬性值決定的,則B的屬性為繼承屬性。
(1)非終結符既可有綜合屬性也可有繼承屬性,但文法開始符號沒有繼承屬性。
(2) 終結符只有綜合屬性,沒有繼承屬性,它們由詞法程序提供。
在計算時: 綜合屬性沿屬性語法樹向上傳遞;繼承屬性沿屬性語法樹向下傳遞。
語法制導翻譯:是指在語法分析過程中,完成附加在所使用的產生式上的語義規則描述的動作。
語法制導翻譯實現:對單詞符號串進行語法分析,構造語法分析樹,然後根據需要構造屬性依賴圖,遍歷語法樹並在語法樹的各結點處按語義規則進行計算。
中間代碼(中間語言)
1、是復雜性介於源程序語言和機器語言的一種表示形式。
2、一般,快速編譯程序直接生成目標代碼。
3、為了使編譯程序結構在邏輯上更為簡單明確,常採用中間代碼,這樣可以將與機器相關的某些實現細節置於代碼生成階段仔細處理,並且可以在中間代碼一級進行優化工作,使得代碼優化比較容易實現。
何謂中間代碼:源程序的一種內部表示,不依賴目標機的結構,易於代碼的機械生成。
為何要轉換成中間代碼:(1)邏輯結構清楚;利於不同目標機上實現同一種語言。
(2)便於移植,便於修改,便於進行與機器無關的優化。
中間代碼的幾種形式:逆波蘭記號 ,三元式和樹形表示 ,四元式
符號表的一般形式:一張符號表的的組成包括兩項,即名字欄和信息欄。
信息欄包含許多子欄和標志位,用來記錄相應名字和種種不同屬性,名字欄也稱主欄。主欄的內容稱為關鍵字(key word)。
符號表的功能:(1)收集符號屬性 (2) 上下文語義的合法性檢查的依據: 檢查標識符屬性在上下文中的一致性和合法性。(3)作為目標代碼生成階段地址分配的依據
符號的主要屬性及作用:
1. 符號名 2. 符號的類型 (整型、實型、字元串型等))3. 符號的存儲類別(公共、私有)
4. 符號的作用域及可視性 (全局、局部) 5. 符號變數的存儲分配信息 (靜態存儲區、動態存儲區)
存儲分配方案策略:靜態存儲分配;動態存儲分配:棧式、 堆式。
靜態存儲分配
1、基本策略
在編譯時就安排好目標程序運行時的全部數據空間,並能確定每個數據項的單元地址。
2、適用的分配對象:子程序的目標代碼段;全局數據目標(全局變數)
3、靜態存儲分配的要求:不允許遞歸調用,不含有可變數組。
FORTRAN程序是段結構,不允許遞歸,數據名大小、性質固定。 是典型的靜態分配
動態存儲分配
1、如果一個程序設計語言允許遞歸過程、可變數組或允許用戶自由申請和釋放空間,那麼,就需要採用動態存儲管理技術。
2、兩種動態存儲分配方式:棧式,堆式
棧式動態存儲分配
分配策略:將整個程序的數據空間設計為一個棧。
【例】在具有遞歸結構的語言程序中,每當調用一個過程時,它所需的數據空間就分配在棧頂,每當過程工作結束時就釋放這部分空間。
過程所需的數據空間包括兩部分
一部分是生存期在本過程這次活動中的數據對象。如局部變數、參數單元、臨時變數等;
另一部分則是用以管理過程活動的記錄信息(連接數據)。
活動記錄(AR)
一個過程的一次執行所需要的信息使用一個連續的存儲區來管理,這個區 (塊)叫做一個活動記錄。
構成
1、臨時工作單元;2、局部變數;3、機器狀態信息;4、存取鏈;
5、控制鏈;6、實參;7、返回地址
什麼是代碼優化
所謂優化,就是對代碼進行等價變換,使得變換後的代碼運行結果與變換前代碼運行結果相同,而運行速度加快或佔用存儲空間減少。
優化原則:等價原則:經過優化後不應改變程序運行的結果。
有效原則:使優化後所產生的目標代碼運行時間較短,佔用的存儲空間較小。
合算原則:以盡可能低的代價取得較好的優化效果。
常見的優化技術
(1) 刪除多餘運算(刪除公共子表達式) (2) 代碼外提 +刪除歸納變數+ (3)強度削弱; (4)變換循環控制條件 (5)合並已知量與復寫傳播 (6)刪除無用賦值
基本塊定義
程序中只有一個入口和一個出口的一段順序執行的語句序列,稱為程序的一個基本塊。

給我分數啊。。。

熱點內容
手機uc瀏覽器緩存電影怎麼刪除 發布:2025-04-04 22:21:12 瀏覽:270
theandroid作文 發布:2025-04-04 22:20:23 瀏覽:9
安卓電視盒子如何看翡翠台 發布:2025-04-04 22:15:14 瀏覽:70
php函數中的函數 發布:2025-04-04 22:10:04 瀏覽:600
等值面演算法 發布:2025-04-04 22:05:51 瀏覽:626
裝修好的房子客廳如何配置沙發 發布:2025-04-04 21:57:58 瀏覽:492
macphpredis 發布:2025-04-04 21:57:04 瀏覽:383
如何測量伺服器時間偏離 發布:2025-04-04 21:57:01 瀏覽:132
電腦配置的ip找不到了怎麼辦 發布:2025-04-04 21:34:07 瀏覽:701
mysql執行sql文件 發布:2025-04-04 21:31:44 瀏覽:841