1樓:文件類共創空間
編譯原理是計算機專業的一門重要專業課,旨在介紹編譯程式構造的一般原理和基本方法。內容包括語言和文法、詞法分析、語法分析、語法制導翻譯、中間**生成、儲存管理、**優化和目標**生成。 編譯原理是計算機專業設定的一門重要的專業課程。
雖然只有少數人從事編譯方面的工作,但是這門課在理論、技術、方法上都對學生提供了系統而有效的訓練,有利於提高軟體人員的素質和能力。 目前各個大學使用的教材機械工業出版社、國防工業出版社出版的《編譯原理》。
什麼是編譯程式
2樓:實心網友
編譯程式(compiler,compiling program),也稱為編譯器,是指把用高階程式設計語言書寫的源程式,翻譯成等價的機器語言格式目標程式的翻譯程式。編譯程式屬於採用生成性實現途徑實現的翻譯程式。
它以高階程式設計語言書寫的源程式作為輸入,而以組合語言或機器語言表示的目標程式作為輸出。編譯出的目標程式通常還要經歷執行階段,以便在執行程式的支援下執行,加工初始資料,算出所需的計算結果。
編譯程式的特點。
編譯程式必須分析源程式,然後綜合成目標程式。首先,檢查源程式的正確性,並把它分解成若干基本成分;其次,再根據這些基本成分建立相應等價的目標程式部分。為了完成這些工作,編譯程式要在分析階段建立一些**,改造源程式為中間語言形式,以便在分析和綜合時易於引用和加工。
編譯器的工作原理
3樓:任詩蘭
編譯 是從源**(通常為高階語言)到能直接被計算機或虛擬機器執行的目標**(通常為低階語言或機器語言)的翻譯過程。然而,也存在從低階語言到高階語言的編譯器,這類編譯器中用來從由高階語言生成的低階語言**重新生成高階語言**的又被叫做反編譯器。也有從一種高階語言生成另一種高階語言的編譯器,或者生成一種需要進一步處理的的中間**的編譯器(又叫級聯)。
典型的編譯器輸出是由包含入口點的名字和地址, 以及外部呼叫(到不在這個目標檔案中的函式呼叫)的機器**所組成的目標檔案。一組目標檔案,不必是同一編譯器產生,但使用的編譯器必需採用同樣的輸出格式,可以連結在一起並生成可以由使用者直接執行的exe,所以我們電腦上的檔案都是經過編譯後的檔案。
4樓:匿名使用者
為了將二進位制數字語言轉換成了方便記憶的符號語言,以一個更類似於數學定義或自然語言的簡潔形式來編寫程式的操作,於是誕生了編譯器。
在2023年至2023年期間,noam chomsky開始了他的自然語言結構的研究。chomsky的研究導致了根據grammar 的難易程度以及識別它們所需的演算法來為語言分類,包括了文法的4個層次:0型、1型、2型和3型文法,且其中的每一個都是其前者的專門化。
2型(或上下文無關文法(context-free grammar ))被證明是程式設計語言中最有用的,而且今天它已代表著程式設計語言結構的標準方式。
在20世紀60年代和70年代,分析問題( parsing problem ,用於限定上下文無關語言的識別的有效演算法)的研究是,它相當完善地解決了這一問題, 現在它已是編譯理論的一個標準部分。它們與3型文法相對應,並且引出了表示程式設計語言的單詞(或稱為記號)的符號方式。程式設計語言的語義通常是由自然語言描述的,這些描述(與形式的詞法及語法結構一起)一般是集中在一個語言參考手冊或語言定義之中。
人們接著又深化了生成有效的目標**的方法,這就是最初的編譯器,它們被一直使用至今。編譯器的編寫者掌握的技術對於語言的定義有很大的影響,一種語言的定義對於構造編譯器所需的技術也有很 大的關係。
在理想情況下,編譯器被嚴格地分成分析和綜合兩部分:掃描程式、分析程式和語義分析程式是前端,**生成器是後端。
掃描程式、分析程式將彙編符號輸入到**中的語義分析程式;語義分析程式將增加資料型別和其他資訊;優化階段和**生成階段也將利用由符號表提供的資訊選 出恰當的**。
c語言編譯原理
5樓:俊小如
1、預處理階段:
主要工作是將標頭檔案插入到所寫的**中,生成副檔名為「.i」的檔案替換原來的副檔名為「.c」的檔案,但是原來的檔案仍然保留,只是執行過程中的實際檔案發生了改變。
這裡所說的替換並不是指原來的檔案被刪除)
2、彙編階段:
插入組合語言程式,將**翻譯成組合語言。編譯器首先要檢查**的規範性、是否有語法錯誤等,以確定**的實際要做的工作,在檢查無誤後,編譯器把**翻譯成組合語言,同時將副檔名為「.i」的檔案翻譯成副檔名為「.
s」的檔案。
3、編譯階段:
將組合語言翻譯成機器語言指令,並將指令打包封存成可重定位目標程式的格式,將副檔名為「.s」的檔案翻譯成副檔名為「.o」的二進位制檔案。
在示例**中,改**檔案呼叫了標準庫中printf函式。而printf函式的實際儲存位置是一個單獨編譯的目標檔案(編譯的結果也是副檔名為「.o」的檔案),所以此時主函式呼叫的時候,需要將該檔案(即printf函式所在的編譯檔案)與hello world檔案整合到一起,此時連結器就可以大顯神通了,將兩個檔案合併後生成一個可執行目標檔案。
編譯原理有用嗎?
6樓:匿名使用者
有用,但是學起來比較難,特別是使用lex yacc工具是西安某些具體的東西。上機實驗是這門課的重點,當然,實驗報告相當難寫。
7樓:匿名使用者
這是三大基礎課程之一,什麼時候成了選修的了。不學會肯定後悔。
8樓:秒懂百科
編譯原理:計算機專業的一門重要專業課。
編譯原理 學的是什麼?
9樓:匿名使用者
1.看完龍書應該是牛人了,特別對普通大學生來說,計算機專業很多都弄不下來,除非211學校。當然你的數學背景很不錯。
2.看完龍書不知道編譯學的是什麼,有點對不起龍書。
3.編譯經典部分主要講識別token的演算法和構建語法樹的演算法,同時也講了怎麼樣在樹上進行標記。這些演算法很經典,體現了計算機程式設計解決問題的很多基本思想。
4.你非計算機專業學這個做什麼?也就是你自學的目的是什麼?
知道這個才能回答你的問題。如果你是想搞其它的研究,僅是瞭解下,則當純粹理論就ok。如果你想考試,則弄本習題書做,如果你想學程式設計,當然最要緊的是寫個編譯器來實踐。ok?
10樓:秒懂百科
編譯原理:計算機專業的一門重要專業課。
C語言條件編譯程式問題
一般情況下,源程式中所有的行都參加編譯。但有時希望對其中一部分內容只在滿足一定條件下才進行編譯,即對一部分內容指定編譯條件,這就是 條件編譯 conditional compile 條件編譯語句排版時,需考慮以下三種位置 1 條件編譯語句塊與函式定義體之間不存在相互巢狀 主要在 h 檔案中 2 條件...
編譯原理 學的是什麼,什麼是編譯原理
編譯原理是計算機專業的一門重要專業課,旨在介紹編譯程式構造的一般原理和基本方法。內容包括語言和文法 詞法分析 語法分析 語法制導翻譯 中間 生成 儲存管理 優化和目標 生成。編譯原理是計算機專業設定的一門重要的專業課程。雖然只有少數人從事編譯方面的工作,但是這門課在理論 技術 方法上都對學生提供了系...
學習編譯原理和作業系統對程式設計能力有什麼作用
編譯原理大約能讓你多個看問題的角度,作業系統大約能讓你長長見識。不過我對中國這方面的課程質量不抱任何希望。如果對程式設計能力做簡單分級,比如初級 中級和高階,作業系統是中級必學科目,編譯原理是高階必學科目。可以這麼說,不學就很難晉級。編譯原理告訴你 為什麼要這麼寫,你要搞懂系統或cpu是如何處理 的...