當前位置:首頁 » 編程語言 » c語言的編譯原理

c語言的編譯原理

發布時間: 2022-11-23 03:45:09

『壹』 c語言是用來編程的,那c語言是什麼東西編出來的

樓上的開玩笑了,C語言當然是ASCII碼編出來的了.
這里的編程語言,實際上都不能說是什麼做出來或開發出來的,因為編程語言實際上是一種規范,一種協議。你(編程者)遵守這種規則(語法)來寫出代碼(實際上是符合語法規則的文本),然後該語言的編譯器才可以分析你的代碼,分析語義並最終轉換成CPU可以執行的單條指令序列。

我猜測你可能是想知道她的集成開發環境或者編譯器是怎麼開發出來的。對於這個問題,我也不清楚細節,每個公司(比如MS、BORLAND)自己的IDE只有自己才知道是什麼語言寫的,很可能一個IDE要有多種語言開發不同的構件,然後集成在一起。因為不同語言有不同語言的好處,因此一個大軟體用多種語言開發不足為奇。
還有,一樓兄弟說C語言也是C寫的,因此你就迷惑了,彷彿說沒有蛋哪來的雞一樣。
這里我要說的是,一個語言的編譯器可以用任何語言來編寫實現(如果用C寫C的編譯器,不是不可能,但是不可能的是用C語言寫第一個C的編譯器,也就是說C語言剛從貝爾實驗室開發出來的時候,它的編譯器很可能是匯編語言寫就的)。
匯編語言的編譯器呢?匯編其實就是機器指令的一種助記符,因此運行沒問題的。
機器語言,它就不用編譯器了,它是由硬體支持的,都是電路實現的。
因此,最早的語言,它的編譯器的開發難度非常大,因為人要干一些不是人乾的活(^_^,機器才適合做呢),而現在的語言,尤其是高級語言,實現難度也不低,雖然支持環境強了(軟體,硬體,現有語言等等),但是高級語言的邏輯實現需要更強的編譯器,解釋器來支持,因此開發這些東西需要的人力物力也是相當大的,希望這個回答你還滿意。

『貳』 急求!!!用C語言編寫一個編譯原理實驗的簡單優先分析法程序

編譯原理IF條件語句的翻譯程序設計—簡單優先法、輸出四元式通過設計、編制、調試一個條件語句的語法及語義分析程序,加深對語法及語義分析原理的理解,並實現詞法分析程序對單詞序列的詞法檢查和分析。具體做到以下幾點:①對輸入語句進行詞法分析。將輸入的字元串進行掃描和分解,識別出一個個合法的單詞。單詞種類包括:關鍵字,標識符,運算符,常數和界限符②進行語法分析。編寫條件語句的相應文法,按照語法分析方法中的簡單優先分析法為文法設計簡單優先表,對詞法分析得到的單詞序列進行語法分析,以判別輸入的語句是否屬於該文法的條件語句。③語法制導翻譯。設計中間代碼(四元式)序列的結構及屬性文法,運用語法制導翻譯,在進行語法分析的同時,執行相應的語義規則描述的動作,從而實現語義處理,生成中間代碼以四元式的形式輸出。④錯誤提示。對不同的錯誤給出簡略描述,並終止程序的繼續執行。下載地址如下,有你要的東西!pile.rar

『叄』 編譯原理

編譯原理是計算機專業的一門重要專業課,旨在介紹編譯程序構造的一般原理和基本方法。內容包括語言和文法、詞法分析、語法分析、語法制導翻譯、中間代碼生成、存儲管理、代碼優化和目標代碼生成。 編譯原理是計算機專業設置的一門重要的專業課程。編譯原理課程是計算機相關專業學生的必修課程和高等學校培養計算機專業人才的基礎及核心課程,同時也是計算機專業課程中最難及最挑戰學習能力的課程之一。編譯原理課程內容主要是原理性質,高度抽象[1]。

中文名
編譯原理[1]
外文名
Compilers: Principles, Techniques, and Tools[1]
領域
計算機專業的一門重要專業課[1]
快速
導航
編譯器

編譯原理課程

編譯技術的發展

編譯的基本流程

編譯過程概述
基本概念
編譯原理即是對高級程序語言進行翻譯的一門科學技術, 我們都知道計算機程序由程序語言編寫而成, 在早期計算機程序語言發展較為緩慢, 因為計算機存儲的數據和執行的程序都是由0、1代碼組合而成的, 那麼在早期程序員編寫計算機程序時必須十分了解計算機的底層指令代碼通過將這些微程序指令組合排列從而完成一個特定功能的程序, 這就對程序員的要求非常高了。人們一直在研究如何如何高效的開發計算機程序, 使編程的門檻降低。[2]
編譯器
C語言編譯器是一種現代化的設備, 其需要藉助計算機編譯程序, C語言編譯器的設計是一項專業性比較強的工作, 設計人員需要考慮計算機程序繁瑣的設計流程, 還要考慮計算機用戶的需求。計算機的種類在不斷增加, 所以, 在對C語言編譯器進行設計時, 一定要增加其適用性。C語言具有較強的處理能力, 其屬於結構化語言, 而且在計算機系統維護中應用比較多, C語言具有高效率的優點, 在其不同類型的計算機中應用比較多。[3]
C語言編譯器前端設計
編譯過程一般是在計算機系統中實現的, 是將源代碼轉化為計算機通用語言的過程。編譯器中包含入口點的地址、名稱以及機器代碼。編譯器是計算機程序中應用比較多的工具, 在對編譯器進行前端設計時, 一定要充分考慮影響因素, 還要對詞法、語法、語義進行分析。[3]
1 詞法分析[3]
詞法分析是編譯器前端設計的基礎階段, 在這一階段, 編譯器會根據設定的語法規則, 對源程序進行標記, 在標記的過程中, 每一處記號都代表著一類單詞, 在做記號的過程中, 主要有標識符、關鍵字、特殊符號等類型, 編譯器中包含詞法分析器、輸入源程序、輸出識別記號符, 利用這些功能可以將字型大小轉化為熟悉的單詞。[3]
2 語法分析[3]
語法分析是指利用設定的語法規則, 對記號中的結構進行標識, 這包括句子、短語等方式, 在標識的過程中, 可以形成特殊的結構語法樹。語法分析對編譯器功能的發揮有著重要影響, 在設計的過程中, 一定要保證標識的准確性。[3]
3 語義分析[3]
語義分析也需要藉助語法規則, 在對語法單元的靜態語義進行檢查時, 要保證語法規則設定的准確性。在對詞法或者語法進行轉化時, 一定要保證語法結構設置的合法性。在對語法、詞法進行檢查時, 語法結構設定不合理, 則會出現編譯錯誤的問題。前端設計對精確性要求比較好, 設計人員能夠要做好校對工作, 這會影響到編譯的准確性, 如果前端設計存在失誤, 則會影響C語言編譯的效果。[3]

『肆』 c語言是如何編譯成二進制

計算機專業有門課程叫做《編譯原理》,詳細講述了怎麼把高級語言翻譯成匯編語言活著機器能看懂的二進制代碼。

簡單的說,C語言是通過編譯器翻譯成二進制代碼的(就像英譯漢的軟體把英文翻譯成漢語一樣。把高級語言翻譯成機器語言過程很復雜,學了編譯原理就懂了)。還有編譯器可以用各種語言編寫,C語言可以被用C語言寫的編譯器來編譯。

『伍』 C語言工作原理

作為一種編程語言,本身是談不上工作原理的,實際上C語言所有的語法,正是C語言編譯器的工作原理或者工作機制的具體實現。要細致的討論起來是不可能,但是作為C語言程序員,必須了解這個大致的流程。一個程序,從C語言源碼,到系統可執行的文件,一般經歷四個過程。
1、預處理階斷,這個階斷是文本處理階斷,有預處理器來完成,會將源碼中的帶"#"開頭的預處理命令進行相應的處理,在Linux上C語言的預處理器程序是cp命令。
2、編譯階斷,這個階斷是有C語言編譯階斷,在Linux上C語言的編譯器是cc命令,它將C語言源碼轉換成匯編指令。
3、匯編階斷,這個階斷是匯編編譯階斷,在Linux上C語言的匯編器是as命令,這個階斷會將匯編指令編譯成二進制機器碼。
4、鏈接階斷,這個階斷是會將匯編階斷生成的機器碼目標文件,裝載成一個系統可執行的文件,在Linux平台以ELF格式進行組裝,在Windows平台上以PE格式進行組裝。在Linux平台上的鏈接器命令為ld,在windows平台上的鏈接器命令為linker。

『陸』 什麼是編譯原理

編譯原理是計算機專業的一門重要專業課,旨在介紹編譯程序構造的一般原理和基本方法。內容包括語言和文法、詞法分析、語法分析、語法制導翻譯、中間代碼生成、存儲管理、代碼優化和目標代碼生成。 編譯原理是計算機專業設置的一門重要的專業課程。雖然只有少數人從事編譯方面的工作,但是這門課在理論、技術、方法上都對學生提供了系統而有效的訓練,有利於提高軟體人員的素質和能力。
這門課程關注的是編譯器方面的產生原理和技術問題,似乎和計算機的基礎領域不沾邊,可是編譯原理卻一直作為大學本科的 必修課程,同時也成為了研究生入學考試的必考內容。編譯原理及技術從本質上來講就是一個演算法問題而已,當然由於這個問題十分復雜,其解決演算法也相對復雜。 我們學的數據結構與演算法分析也是講演算法的,不過講的基礎演算法,換句話說講的是演算法導論,而編譯原理這門課程講的就是比較專註解決一種的演算法了。在20世紀 50年代,編譯器的編寫一直被認為是十分困難的事情,第一Fortran的編譯器據說花了18年的時間才完成。在人們嘗試編寫編譯器的同時,誕生了許多跟 編譯相關的理論和技術,而這些理論和技術比一個實際的編譯器本身價值更大。就猶如數學家們在解決著名的哥德巴赫猜想一樣,雖然沒有最終解決問題,但是其間 誕生不少名著的相關數論。

『柒』 C語言編譯執行的全過程是怎樣的

不明白樓主什麼意思,就是先把你的代碼轉為匯編代碼,然後轉為二進制文件,讀入內存執行。

『捌』 C語言是什麼寫的

1、最早的C語言是匯編語言寫的。任何計算機語言編寫完成後,都要轉換成二進制形式的機器語言,才能運行。機器語言也就是二進制代碼,可以和匯編語言一一對應。最早的時候是機器語言,也就是二進制的01代碼,但是這個不容易讀懂,所以人們發明了助記符,也就是匯編語言,讓機器的01代碼和匯編的助記符一一對應,這樣容易記憶和讀懂。匯編雖然能讀懂,但是利用的時候還是非常繁瑣,所以人們發明了高級語言,也就是b,c,p,f等語言,這樣大大減少了編寫程序的工作量。
2、c語言,是用c的標准格式編寫的,用c的編譯環境把程序轉換為機器語言才能在計算機中運行,c很早的變異環境tc是用匯編寫的,後來的vc編譯環境就不是了。一般的程序,是用高級語言編寫,最後用匯編代碼優化一下。

『玖』 求C語言編譯原理語法分析程序

一繼承的詞法來自

http://blog.sina.com.cn/s/blog_67c9fc300100srad.html
二語法

用擴充的BNF表示如下:

⑴<程序>::=begin<語句串>end

⑵<語句串>::=<語句>{;<語句>}

⑶<語句>::=<賦值語句>

⑷<賦值語句>::=ID:=<表達式>

⑸<表達式>::=<項>{+<項> | -<項>}

⑹<項>::=<因子>{*<因子> | /<因子>

⑺<因子>::=ID | NUM | (<表達式>)

三要求

輸入單詞串,以「#」結束,如果是文法正確的句子,則輸出成功信息,列印「success」,否則輸出「error」。

例如:

輸入 begin a:=9; x:=2*3; b:=a+x end #

輸出 success!

輸入 x:=a+b*c end #

輸出 error!

熱點內容
內嵌刷機腳本出錯 發布:2022-11-28 02:06:44 瀏覽:490
ios自動化測試腳本 發布:2022-11-28 02:05:52 瀏覽:693
lol安卓怎麼玩 發布:2022-11-28 02:05:30 瀏覽:192
帕薩特b5音響有密碼如何解鎖 發布:2022-11-28 02:04:44 瀏覽:948
android使用svn 發布:2022-11-28 02:01:38 瀏覽:872
樹莓派編譯opencvpython 發布:2022-11-28 02:00:27 瀏覽:381
腳本手機電腦通用嗎 發布:2022-11-28 01:52:41 瀏覽:955
存儲卡處理 發布:2022-11-28 01:48:10 瀏覽:285
編譯器怎麼轉移到其他盤找 發布:2022-11-28 01:41:34 瀏覽:686
修空調壓縮機壞了 發布:2022-11-28 01:38:33 瀏覽:674