當前位置:首頁 » 編程軟體 » 英文版編譯原理

英文版編譯原理

發布時間: 2022-08-21 00:35:01

1. 北京有沒有地方可以自學大專,我初中畢業

1,自考無任何限制,小學文憑沒有都可以報名考試 ,只用身份證或戶口簿(16周歲以下無身份證可用戶口簿報名)去常住地域 招收學生 考試辦公室報名。每門課程40元(有的地域 每門48元,可上省自考網上查詢)。2,先在省自考網上報名,然後去報名考試 點去確定(通常 都是常住地域 招收學生 考試辦公室)交錢。第一次一定要去報名考試 點交錢辦准考證,當前 在交通銀行辦張交行卡在網上報名考試 。3,自考的內容基本上是教輔《自考通》或《一考通》上的重點提示或原題,歷年試卷上的考點更多 反復 考,比較有規律,平常 多做教輔習題,考前多做歷年試卷和模仿 試卷,過關不成難題 。4,假如 中學基礎差就報:行政管理,法律,漢言語 文學,學前教育等無數學的專業,這些專業是自考高過關率專業,更多 只要 初中基礎的考生都已過關拿證。5,從2019年開始,湖北省一年就三次(四月,七月,十月)。有的地方是兩次。6,通常 一次四門全部報滿最好。7,自考的難度無法與普通高中高考 和中考相比,基礎差的考生報無數學的專業應該可以過關。8,專科和本科可以一同 考,考專科是無任何限制的,但是辦本科畢業證必需要有專科畢業證。
考試規律總結

1,自考的內容就是教輔《自考通》或《一考通》上的重點提示或原題。多做教輔習題。

2,自考歷年試卷上考點有些反復 考,最近四年的試卷要多做。模仿 試卷要多做。

3,考試前三周死拼教輔。光看教學材料 效果不明顯 ,多關注教輔才是關鍵。

4,考試難度大的標題 佔百分三十不到,將復雜 題和中等題掌握就行了。

5,假如 是記憶的話:將每段話的第一句強記住,後面的內容掌握大義即可。文科和理科有區別的,文科微觀 性強。只需 你答題不跑偏,大義寫對就可撈分。

6,多項選擇真實 拿不了主意:ABCDE全選滿,總能碰對幾分。

7,考前三周重復 做《自考通》或《一考通》,記住重點提示和習題。模仿 試卷和歷年試卷上的標題 每天做一套,力爭片面 掌控。

最牛自考生(兩個完全自學者)

2002年3月19日,14歲的上海少年丁磊,8歲開始自考.經過6年的艱辛 努力 ,終於拿到了山東大學計算機信息管理專業的本科文憑,成為我國目前年齡最小的自考本科生(煙台日報2002.3.22) 當我們連夜趕到上海,向他表示恭喜 時,見他又在捧著一本厚厚的英文版《編譯原理技術與工具》,預備 他的下一步計劃——考碩攻博。我們在他8平方米不到的寒舍里,聽他生長 的故事。

2004年3月,14歲的隴原少年王大可,以優良 的分數 考取了北京大學數學迷信 院2004屆基礎數學碩士研究生。他因而 成為北京大學歷史上年

齡最小的研究生,被國內許多媒體稱為「神童」。全國最小自考生考上北大研究生[4]全國龐大的自考生大軍中,年齡最小的是王大可:小學僅上了一個月,9歲自考本科,14歲考上北大碩士研究生。

驚嘆之餘,不少人難免心存疑惑:他是如何完成中、小學教育的?他有本科文憑嗎?

天資聰明 但卻從小體弱多病的王大可,直到8歲才上小學一年級。入校沒多長時間,他居然 向班主任提出:直接參與 六年級的數學考試!在眾人疑心 的目光中,他按規則 的時間答完了六年級的數學試卷,取得 滿分。

原來,在父母親的輔導和刻苦自學下,大可6歲時就學完了小學數學,7歲時學完了初中數學,8歲時學完了高中數學,用當年高中高考 滿分150分的數學題目 測驗 ,他得分146分。

從9歲起,王大可完畢 了只要 個把月的正規學校生活,開始踏上了自學考試之路。到今年6月,王大可過關了自學考試數學專科和本科的全部課程,數學專業課程的分數 都在80分到95分,公共課程的考分在64分與78分之間。

2004年5月21日,在西北師大數學與信息迷信 學院舉行的本科論文辯論 中,王大可的畢業論文「傳染病數學模型的樹立 與剖析 」取得 了85分的較高分。專家在他的論文上寫下了這樣的評語:論文中數學模型樹立 正確,推理明晰 ,言語 表達明白 ,是一篇相當不錯的本科論文。

北大讀研

[5]

王大可2004年北大讀研時[6]

2004年9月6日,王大可到北大曾經 快半個月了,已承受 了校內和校外的好幾家媒體的采訪。「一見報,就帶來了更多 費事 ,以前我就是學習,後來我們樓上的人也開始關懷 這事了。」他說,承受 媒體采訪後,四周 的環境發生了很大的變化,也給他帶來了更多 費事 。

王大可爸爸也擔憂 孩子承受 媒體采訪會影響學習,「如今 的學習壓力很大,承受 媒體采訪會對孩子的生長 和學習都不利。」因怕王大可不會照顧好本人 ,他爸爸曾經 在北京呆了半個月了。同時,也限制跟大可在一同 的時間,每天只在晚上7時左右陪上王大可半個小時左右,「就是想鍛煉一下他的獨立才能 。」
到北京大學讀研是大可的願望。這次他參與 北大研究生考試,本來 是想為明年正式考試做預備 ,沒想到順利過關。思索 到王大可年齡尚小,數學學院專門為他制定 了培育 計劃。這是關於 北京有沒有地方可以自學大專,我初中畢業的解答。174

2. 大專怎麼升本科

1,自考無任何限制,小學文憑沒有都可以報考,只用身份證或戶口簿(16周歲以下無身份證可用戶口簿報名)去常住地區招生考試辦公室報名。每門課程40元(湖北省)。2,先在省自考網上報名,然後去報考點去確定(一般都是常住地區招生考試辦公室)交錢。第一次一定要去報考點交錢辦准考證,以後在交通銀行辦張交行卡在網上報考。3,自考的內容基本上是教輔《自考通》或《一考通》上的重點提示或原題,歷年試卷上的考點很多重復考,比較有規律,平時多做教輔習題,考前多做歷年試卷和模擬試卷,過關不成問題。4,如果中學基礎差就報:行政管理,法律,漢語言文學,學前教育等無數學的專業,這些專業是自考高過關率專業,很多隻有初中基礎的考生都已過關拿證。5,從2014年開始,湖北省一年就三次(四月,七月,十月)。有的地方是兩次。6,一般一次四門全部報滿最好。7,自考的難度無法與普通高考和中考相比,基礎差的考生報無數學的專業應該可以過關。8,專科和本科可以一起考,考專科是無任何限制的,但是辦本科畢業證必需要有專科畢業證。

考試規律總結
1,自考的內容就是教輔《自考通》或《一考通》上的重點提示或原題。多做教輔習題。
2,自考歷年試卷上考點有些重復考,最近四年的試卷要多做。模擬試卷要多做。
3,考試前三周死拼教輔。光看教材效果不顯著,多關注教輔才是關鍵。
4,考試難度大的題目佔百分三十不到,將簡單題和中等題掌握就行了。
5,如果是記憶的話:將每段話的第一句強記住,後面的內容掌握大義即可。文科和理科有區別的,文科宏觀性強。只要你答題不跑偏,大義寫對就可撈分。
6,多項選擇實在拿不了主意:ABCDE全選滿,總能碰對幾分。
7,考前三周反復做《自考通》或《一考通》,記住重點提示和習題。模擬試卷和歷年試卷上的題目每天做一套,力爭全面掌控。

最牛自考生(兩個完全自學者)

2002年3月19日,14歲的上海少年丁磊,8歲開始自考.經過6年的艱苦奮斗,終於拿到了山東大學計算機信息管理專業的本科文憑,成為我國目前年齡最小的自考本科生(煙台日報2002.3.22) 當我們連夜趕到上海,向他表示祝賀時,見他又在捧著一本厚厚的英文版《編譯原理技術與工具》,准備他的下一步計劃——考碩攻博。我們在他8平方米不到的寒舍里,聽他成長的故事。

2004年3月,14歲的隴原少年王大可,以優異的成績考取了北京大學數學科學院2004屆基礎數學碩士研究生。他因此成為北京大學歷史上年齡最小的研究生,被國內許多媒體稱為「神童」。全國最小自考生考上北大研究生[4]全國龐大的自考生大軍中,年齡最小的是王大可:小學僅上了一個月,9歲自考本科,14歲考上北大碩士研究生。
驚嘆之餘,不少人難免心存疑惑:他是如何完成中、小學教育的?他有本科文憑嗎?
天資聰慧但卻從小體弱多病的王大可,直到8歲才上小學一年級。入校沒多長時間,他竟然向班主任提出:直接參加六年級的數學考試!在眾人懷疑的目光中,他按規定的時間答完了六年級的數學試卷,獲得滿分。
原來,在父母親的輔導和刻苦自學下,大可6歲時就學完了小學數學,7歲時學完了初中數學,8歲時學完了高中數學,用當年高考滿分150分的數學試題測試,他得分146分。
從9歲起,王大可結束了只有個把月的正規學校生活,開始踏上了自學考試之路。到今年6月,王大可通過了自學考試數學專科和本科的全部課程,數學專業課程的成績都在80分到95分,公共課程的考分在64分與78分之間。
2004年5月21日,在西北師大數學與信息科學學院舉行的本科論文答辯中,王大可的畢業論文「傳染病數學模型的建立與分析」獲得了85分的較高分。專家在他的論文上寫下了這樣的評語:論文中數學模型建立正確,推理清晰,語言表達明確,是一篇相當不錯的本科論文。
北大讀研
[5]

王大可2004年北大讀研時[6]
2004年9月6日,王大可到北大已經快半個月了,已接受了校內和校外的好幾家媒體的采訪。「一見報,就帶來了很多麻煩,以前我就是學習,後來我們樓上的人也開始關心這事了。」他說,接受媒體采訪後,周圍的環境發生了很大的變化,也給他帶來了很多麻煩。
王大可爸爸也擔心孩子接受媒體采訪會影響學習,「現在的學習壓力很大,接受媒體采訪會對孩子的成長和學習都不利。」因怕王大可不會照顧好自己,他爸爸已經在北京呆了半個月了。同時,也限制跟大可在一起的時間,每天只在晚上7時左右陪上王大可半個小時左右,「就是想鍛煉一下他的獨立能力。」
到北京大學讀研是大可的願望。這次他參加北大研究生考試,原本是想為明年正式考試做准備,沒想到順利過關。考慮到王大可年齡尚小,數學學院專門為他制訂了培養計劃。

3. 軟體開發需要學習什麼基礎知識

學習軟體開發經常會涉及到數學和英語的知識,所以需要有一定的數學和英語基礎,這樣可以讓軟體開發變得事半功倍。千鋒教育就有線上免費的軟體開發公開課,【更系統全面的學習資料,點擊查看】。

千鋒教育採用全程面授高品質、高體驗培養模式,學科大綱緊跟企業需求,擁有國內一體化教學管理及學員服務,在職業教育發展道路上不斷探索前行。如果你擅長英語和數學,你可以跳過這一步。軟體的操作是通過某種程序語言來實現的,所以學好程序語言是做好軟體開發的必修課。所以,如果你想學軟體開發,第二步就是選擇一門編程開發語言來學習,集中精力學好一門語言。一般來說,要想做好軟體開發,至少要學一門編程語言。目前主流的編程語言有Java、PHP、C#語言,軟體開發形式有多種,先學好這些基礎語言,之後再慢慢擴展。除了學習基礎語言,還要學習資料庫的知識。在軟體開發中,數據的存儲和調用至關重要。HTML,CSS,Java腳本等相關的前端語言也是需要掌握的,經過這四個學習階段,我們已經基本掌握了一套完整的軟體開發流程,後面深入學習的話,就需要掌握各種框架。千鋒官網每日更新最新軟體開發基礎知識內容,鞏固日常學習中的基礎技能。更有免費的軟體開發視頻教程幫助學員快速學習。【千鋒IT培訓機構,熱門IT課程試聽名額限時領取】

4. 學習編譯原理哪本書好

我們學校用的是《編譯原理》與《編譯原理與實踐》這兩本書,這兩本書都是國外的教材。我覺得《編譯原理與實踐》這本書不錯,自學應該能看懂,而且代碼比較多,書最後還有整個小型編譯器的源代碼。
編譯不好學,你就慢慢學吧。

下面的資料請作參考:

當代編譯技術三大聖經級別的教材

1.龍書(Dragon book)
書名是Compilers: Principles,Techniques,and Tools
作者是:Alfred V.Aho,Ravi Sethi,Jeffrey D.Ullman

內容簡介
《編譯原理》作者Alfred V.Aho、Ravi Sethi和Jeffrey D.Ullman是世界著名的計算機 科學家,他們在計算機科學理論、資料庫等很多領域都做出了傑出貢獻。《編譯原理》 是編譯領域無可替代的經典著作,被廣大計算機專業人士譽為「龍書」。《編譯原理》一 直被世界各地的著名高等院校和科研機構(如貝爾實驗室、哥倫比亞大學、普 林斯頓大學和斯坦福大學等)廣泛用作本科生和研究生編譯原理與技術課程的 教材,《編譯原理》對我國計算機教育界也具有重大影響。 書中深入討論了編譯器設計的重要主題,包括詞法分析、語法分析、語法制 導分析、類型檢查、運行環境、中間代碼生成、代碼生成、代碼優化等,並在 最後兩章中討論了實現編譯器的一些編程問題和幾個編譯器實例,而且每章都 提供了大量的練習和參考文獻。

與上一版相比,《編譯原理》第二版進行了全面的修訂,涵蓋了編譯器開發方面的最新進展。每章中都提供了大量的系統及參考文獻。《編譯原理》是編譯原理課程方面的經典教材,內容豐富,適合作為高等院校計算機及相關專業本科生及研究生的編譯原理課程的教材,也是廣大技術人員的極佳參考讀物。

作者簡介
Alfred V.Aho,美國歌倫比亞大學教授,美國國家工程院院士,ACM和IEEE會士,曾獲得IEEE的馮·諾伊曼獎。著有多部演算法、數據結構、編譯器、資料庫系統及計算機科學基礎方面的著作。
Monica S.Lam,斯坦福大學計算機科學系教授,曾任Tensilica的首席科學家,也是Moka5的首任CEO。曾經主持SUIF項目,該項目產生了最流行的研究用編譯器之一。
Ravi Sethi,Avaya實驗室總裁,曾任貝爾實驗室高級副總裁TLucent Technologies通信軟體的CTO。他曾在賓夕法尼亞州立大學、亞利桑那州立大學和普林斯頓大學任教,是ACM會士。
Jeffrey D.Ullman斯坦福大學計算機科學系教授和Gradiance CEO,他的研究興趣包括資料庫理論、資料庫集成、數據挖掘和利用信息基礎設施教學等。他是美國國家工程院院士、IEEE會士,獲得過ACM的KarIstrom傑出教育家獎和Knuth獎。
第一版中文版
第二版中文版

2.鯨書(Whale book)
書名是:Advanced Compiler Design and Implementation
作者是:Steven S.Muchnick

內容簡介
本書迎接現代語言和體系結構的挑戰,幫助讀者作好准備,去應對將來要遇到的編譯器設計的問題。
本書涵蓋現代微處理器編譯器的設計和實現方面的所有高級主題。本書從編譯設計基礎領域中的高級問題開始,廣泛而深入地闡述各種重要的代碼優化技術,分析各種優化之間的相對重要關系,以及實現這些優化的最有效方法。
本書特點
●為理解高級編譯器設計的主要問題奠定了基礎
●深入闡述優化問題
●用Sun的SPARC、IBM的POWER和PowerPC、DEC的Alpha以及Intel的Pentium和相關商業編譯 器作為案例,說明編譯器結構、中間代碼設計和各種優化方法
●給出大量定義清晰的關於代碼生成、優化和其他問題的演算法
●介紹由作者設計的以清晰、簡潔的方式描述演算法的語言ICAN (非形式編譯演算法表示)。

本書是經典的編譯器著作,與「龍書」齊名,稱為鯨書。書中針對現代語言和體系結構全面介紹了編譯器設計與實現的高級論題,從編譯器的基礎領域中的高級問題開始,然後深入討論了各種重要的代碼優化。本書專為編譯器專業人士和計算機專業本科生,研究生編寫,在設計和實現高度優化的編譯器以及確定優化的重要性和實現優化的最有效的方法等方面,為讀者提供了非常有價值的指導。

作者簡介
Steven S.Muchnick,曾是計算機科學教授,後作為惠普的PA-RISC和SUN的SPARC兩種計算機體系結構的核心開發成員,將自己的知識和經驗應用於編譯器設計,並擔任這些系統的高級編譯器設計與實現小組的領導人。他在研究和開發方面的雙重經驗,對於指導讀者作出編譯器設計決策極具價值。

3.虎書(Tiger book)
書名是:Modern Compiler Implementation in C /Java /ML,Second Edition
作者是:Andrew W.Appel,with Jens Palsberg

內容簡介
《現代編譯原理——C語言描述(英文版)/圖靈原版計算機科學系列》全面講述了現代編譯器的各個組成部分,包括:詞法分析、語法分析、抽象語法、語義檢查、中間代碼表示、指令選擇、數據流分析、寄存器分配以及運行時系統等。與大多數編譯原理的教材不同,《現代編譯原理——C語言描述(英文版)/圖靈原版計算機科學系列》採用了函數語言和面向對象語言來描述代碼生成和寄存器分配,對於編譯器中各個模塊之間的介面都給出了實際的 C 語言頭文件。 全書分成兩部分,第一部分是編譯的基礎知識,適用於第一門編譯原理課程(一個學期);第二部分是高級主題,包括面向對象語言和函數語言、垃圾收集、循環優化、 SSA(靜態單賦值)形式、循環調度、存儲結構優化等。
本書是一本著名的編譯原理課程的教材。國際上眾多名校均採用本書作為編譯原理課程的教材,包括美國麻省理工學院、加州大學伯克利分校、普林斯頓大學和英國劍橋大學等。本書在國外享有「虎書」的稱號,與有「龍書」之稱的《編譯原理》(Alfred Aho 等編著)齊名。與編譯原理方面的其他名著相比,本書出版時間晚,內容新。 書中專門為學生提供了一個用 C 語言編寫的實習項目,包括前端和後端設計,學生可以在一學期內創建一個功能完整的編譯器。

作者簡介
Andrew W.Appel,美國普林斯頓大學計算機科學系教授,第26屆ACM SIGPLAN-SIGACT程序設計原理年會大會執行主席,1998-1999年在貝爾實驗室做研究工作。主要研究方向是計算機安全、編譯器設計、程序設計語言等。

5. 編譯原理懂的進

唉,這個中文翻譯的實在差啊,這些名詞概念不需要搞清楚的,建議你看下編譯原理的英文版

6. 請問關於編譯原理有什麼好的書及網站介紹啊(中英文都可以的)

Compilers:Principles,Techniques,and Tools
Alfred V.Aho, Ravi Sethi, Jeffrey D.Ullman, 1986
人民郵電版影印,2002. 機械工業版中譯本,2003

《程序設計語言編譯原理》第3版
陳火旺 等 編著,國防工業出版社,2000

Advanced Compiler Design and Implementation
Steven S. Muchnick, 1997. 機械工業出版社影印,2003

Modern Compiler Implementation in C
Andrew W.Appel,人民郵電出版社影印,2005

Programming Language Pragmatics
Michaeil. Scott etc.,電子工業出版社中譯本,2005
這些都是編譯原理非常好的書,網上貌似也有電子版。

7. 為什麼要學習編譯原理(轉)

大學課程為什麼要開設編譯原理呢?這門課程關注的是編譯器方面的產生原理和技術問題,似乎和計算機的基礎領域不沾邊,可是編譯原理卻一直作為大學本科的必修課程,同時也成為了研究生入學考試的必考內容。編譯原理及技術從本質上來講就是一個演算法問題而已,當然由於這個問題十分復雜,其解決演算法也相對復雜。我們學的數據結構與演算法分析也是講演算法的,不過講的基礎演算法,換句話說講的是演算法導論,而編譯原理這門課程講的就是比較專註解決一種的演算法了。在20世紀50年代,編譯器的編寫一直被認為是十分困難的事情,第一Fortran的編譯器據說花了18年的時間才完成。在人們嘗試編寫編譯器的同時,誕生了許多跟編譯相關的理論和技術,而這些理論和技術比一個實際的編譯器本身價值更大。就猶如數學家們在解決著名的哥德巴赫猜想一樣,雖然沒有最終解決問題,但是其間誕生不少名著的相關數論。 推薦參考書 雖然編譯理論發展到今天,已經有了比較成熟的部分,但是作為一個大學生來說,要自己寫出一個像TurbocC,Java那樣的編譯器來說還是太難了。不僅寫編譯器困難,學習編譯原理這門課程也比較困難。 第一本書的原名叫《CompilersPrinciples,Techniques,andTools》,另外一個響亮的名字就是龍書。原因是這本書的封面上有條紅色的龍,也因為獗臼樵詒嘁朐?砘?嘴域確實?忻?所以很多國外的學者都直接取名為龍書。最近機械工業出版社已經出版了此書的中文版,名字就叫《編譯原理》。該書出的比較早,大概是在85或86年編寫完成的,作者之一還是著名的貝爾實驗室的科學家。裡面講解的核心編譯原理至今都沒有變過,所以一直到今天,它的價值都非凡。這本書最大的特點就是一開始就通過一個實際的小例子,把編譯原理的大致內容羅列出來,讓很多編譯原理的初學者很快心裡有了個底,也知道為什麼會有這些理論,怎麼運用這些理論。而這一點是我感覺國內的教材缺乏的東西,所以國內的教材都不是寫給願意自學的讀者,總之讓人看了半天,卻不知道裡面的東西有什麼用。 第二本書的原名叫《ModernCompilerDesign》,中文名字叫做《現代編譯程序設計》。該書由人民郵電出版社所出。此書比較關注的是編譯原理的實踐,書中給出了不少的實際程序代碼,還有很多實際的編譯技術問題等等。此書另外一個特點就是其現代而字。在傳統的編譯原理教材中,你是不可能看到如同Java中的垃圾回收等演算法的。因為Java這樣的解釋執行語言是在近幾年才流行起來的東西。如果你想深入學習編譯原理的理論知識,那麼你肯定得看前面那本龍書,如果你想自己動手做一個先進的編譯器,那麼你得看這本《現代編譯程序設計》。 第三本書就是很多國內的編譯原理學者都推薦的那本《編譯原理及實踐》。或許是這本書引入國內比較早吧,我記得我是在高中就買了這本書,不過也是在前段時間才把整本書看完。此書作為入門教程也的確是個不錯的選擇。書中給出的編譯原理講解也相當細致,雖然不如前面的龍書那麼深入,但是很多地方都是點到為止,作為大學本科教學已經是十分深入了。該書的特點就是注重實踐,不過感覺還不如前面那本《現代編譯程序設計》的實踐味道更重。此書的重點還是在原理上的實踐,而非前面那本那樣的技術實踐。《編譯原理及實踐》在講解編譯原理的各個部分的同時,也在逐步實踐一個現代的編譯器TinyC.等你把整本書看完,差不多自己也可以寫一個TinyC了。作者還對Lex和Yacc這兩個常用的編譯相關的工具進行了很詳細的說明,這一點也是很難在國內的教材中看到的。 推薦了這三本教材,都有英文版和中文版的。很多英文好的同學只喜歡看原版的書,不我的感覺是這三本書的翻譯都很不錯,沒有必要特別去買英文版的。理解理論的實質比理解表面的文字更為重要。 編譯原理的實質 幾乎每本編譯原理的教材都是分成詞法分析,語法分析(LL演算法,遞歸下降演算法,LR演算法),語義分析,運行時環境,中間代碼,代碼生成,代碼優化這些部分。其實現在很多編譯原理的教材都是按照85,86出版的那本龍書來安排教學內容的,所以那本龍書的內容格式幾乎成了現在編譯原理教材的定式,包括國內的教材也是如此。一般來說,大學裡面的本科教學是不可能把上面的所有部分都認真講完的,而是比較偏重於前面幾個部分。像代碼優化那部分東西,就像個無底洞一樣,如果要認真講,就是單獨開一個學期的課也不可能講得清楚。所以,一般對於本科生,對詞法分析和語法分析掌握要求就相對要高一點了。 詞法分析相對來說比較簡單。可能是詞法分析程序本身實現起來很簡單吧,很多沒有學過編譯原理的人也同樣可以寫出各種各樣的詞法分析程序。不過編譯原理在講解詞法分析的時候,重點把正則表達式和自動機原理加了進來,然後以一種十分標準的方式來講解詞法分析程序的產生。這樣的做法道理很明顯,就是要讓詞法分析從程序上升到理論的地步。 語法分析部分就比較麻煩一點了。現在一般有兩種語法分析演算法,LL自頂向下演算法和LR自底向上演算法。LL演算法還好說,到了LR演算法的時候,困難就來了。很多自學編譯原理的都是遇到LR演算法的理解成問題後就放棄了自學。其實這些東西都是只要大家理解就可以了,又不是像詞法分析那樣非得自己寫出來才算真正的會。像LR演算法的語法分析器,一般都是用工具Yacc來生成,實踐中完全沒有比較自己來實現。對於LL演算法中特殊的遞歸下降演算法,因為其實踐十分簡單,那麼就應該要求每個學生都能自己寫。當然,現在也有不少好的LL演算法的語法分析器,不過要是換在非C平台,比如Java,Delphi,你不能運用YACC工具了,那麼你就只有自己來寫語法分析器。 等學到詞法分析和語法分析時候,你可能會出現這樣的疑問:詞法分析和語法分析到底有什麼?就從編譯器的角度來講,編譯器需要把程序員寫的源程序轉換成一種方便處理的數據結構(抽象語法樹或語法樹),那麼這個轉換的過程就是通過詞法分析和語法分析的。其實詞法分析並非一開始就被列入編譯器的必備部分,只是我們為了簡化語法分析的過程,就把詞法分析這種繁瑣的工作單獨提取出來,就成了現在的詞法分析部分。除了編譯器部分,在其它地方,詞法分析和語法分析也是有用的。比如我們在DOS,Unix,Linux下輸入命令的時候,程序如何分析你輸入的命令形式,這也是簡單的應用。總之,這兩部分的工作就是把不規則的文本信息轉換成一種比較好分析好處理的數據結構。那麼為什麼編譯原理的教程都最終把要分析的源分析轉換成樹這種數據結構呢?數據結構中有Stack,Line,List這么多數據結構,各自都有各自的特點。但是Tree這種結構有很強的遞歸性,也就是說我們可以把Tree的任何結點Node提取出來後,它依舊是一顆完整的Tree。這一點符合我們現在編譯原理分析的形式語言,比如我們在函數裡面使用函樹,循環中使用循環,條件中使用條件等等,那麼就可以很直觀地表示在Tree這種數據結構上。同樣,我們在執行形式語言的程序的時候也是如此的遞歸性。在編譯原理後面的代碼生成的部分,就會介紹一種堆棧式的中間代碼,我們可以根據分析出來的抽象語法樹,很容易,很機械地運用遞歸遍歷抽象語法樹就可以生成這種指令代碼。而這種代碼其實也被廣泛運用在其它的解釋型語言中。像現在流行的Java,.NET,其底層的位元組碼bytecode,可以說就是這中基於堆棧的指令代碼的。 關於語義分析,語法制導翻譯,類型檢查等等部分,其實都是一種完善前面得到的抽象語法樹的過程。比如說,我們寫C語言程序的時候,都知道,如果把一個浮點數直接賦值給一個整數,就會出現類型不匹配,那麼C語言的編譯器是怎麼知道的呢?就是通過這一步的類型檢查。像C++語言這中支持多態函數的語言,這部分要處理的問題就更多更復雜了。大部編譯原理的教材在這部分都是講解一些比較好的處理策略而已。因為新的問題總是在發生,舊的辦法不見得足夠解決。 本來說,作為一個編譯器,起作用的部分就是用戶輸入的源程序到最終的代碼生成。但是在講解最終代碼生成的時候,又不得不講解機器運行環境等內容。因為如果你不知道機器是怎麼執行最終代碼的,那麼你當然無法知道如何生成合適的最終代碼。這部分內容我自我感覺其意義甚至超過了編譯原理本身。因為它會把一個計算機的程序的運行過程都通通排在你面前,你將來可能不會從事編譯器的開發工作,但是只要是和計算機軟體開發相關的領域,都會涉及到程序的執行過程。運行時環境的講解會讓你更清楚一個計算機程序是怎麼存儲,怎麼裝載,怎麼執行的。關於部分的內容,我強烈建議大家看看龍書上的講解,作者從最基本的存儲組織,存儲分配策略,非局部名字的訪問,參數傳遞,符號表到動態存儲分配(malloc,new)都作了十分詳細的說明。這些東西都是我們編寫平常程序的時候經常要做的事情,但是我們卻少去探求其內部是如何完成。 關於中間代碼生成,代碼生成,代碼優化部分的內容就實在不好說了。國內很多教材到了這部分都會很簡單地走馬觀花講過去,學生聽了也只是作為了解,不知道如何運用。不過這部分內容的東西如果要認真講,單獨開一學期的課程都講不完。在《編譯原理及實踐》的書上,對於這部分的講解就恰到好處。作者主要講解的還是一種以堆棧為基礎的指令代碼,十分通俗易懂,讓人看了後,很容易模仿,自己下來後就可以寫自己的代碼生成。當然,對於其它代碼生成技術,代碼優化技術的講解就十分簡單了。如果要仔細研究代碼生成技術,其實另外還有本叫做《》,那本書現在由機械工業出版社引進的,十分厚重,而且是英文原版。不過這本書我沒有把它列為推薦書給大家,畢竟能把龍書的內容搞清楚,在中國已經就算很不錯的高手了,到那個時候再看這本《》也不遲。代碼優化部分在大學本科教學中還是一個不太重要的部分,就是算是實踐過程中,相信大家也不太運用得到。畢竟,自己做的編譯器能正確生成執行代碼已經很不錯了,還談什麼優化呢? 編譯原理的課程畢竟還只是講解原理的課程,不是專門的編譯技術課程。這兩門課程是有很大的區別的。編譯技術更關注實際的編寫編譯器過程中運用到的技術,而原理的課

熱點內容
台式機忘記開機密碼怎麼辦 發布:2025-02-06 11:58:01 瀏覽:868
android刷新按鈕 發布:2025-02-06 11:57:17 瀏覽:585
存儲過程有輸入參數和輸出參數 發布:2025-02-06 11:55:32 瀏覽:96
成績評選演算法 發布:2025-02-06 11:42:51 瀏覽:994
資料庫測試數據 發布:2025-02-06 11:31:05 瀏覽:821
球頭軸編程 發布:2025-02-06 11:29:36 瀏覽:280
為什麼安卓系統不能收縮許可權 發布:2025-02-06 11:27:58 瀏覽:730
演算法4視頻 發布:2025-02-06 11:19:20 瀏覽:934
51內置音效卡需要什麼主機配置 發布:2025-02-06 11:18:33 瀏覽:838
防針刺傷的物品配置有哪些 發布:2025-02-06 11:11:25 瀏覽:670