編譯原理第一章


草稿

1.介紹編譯器和解釋器的區(qū)別枣氧,以及各自優(yōu)點
2.介紹編譯器的基本結構:詞法分析(token stream)溢十,語法分析(syntax tree),語義分析(syntax tree)达吞,中間代碼生成(intermddiate representation)张弛,優(yōu)化(intermddiate representation),目標代碼產(chǎn)生(target-machine code)酪劫。
如下圖所示吞鸭,所有圖片均來自英文編譯原理第二版。


phases of a compiler

3.其中編譯階段可以分為前段和后端覆糟,前者主要是分析(analysis)刻剥,后者主要是合成(synthesis),其中整個階段都會對符號表進行讀出和寫入操作

詞法分析

作用:讀入組成源程序的字符流滩字,找出每個詞素(lexemes)造虏,也就是有語法意義最小單位的字符或者字符串。統(tǒng)一格式麦箍,備用漓藕。
產(chǎn)出:<token-name , sttribute-value>,前者代表抽象符號挟裂,后者代表前者的符號表的入口地址享钞。
構造方法:正則表達式,有限自動機
例:position = initial + rate * 60
經(jīng)過詞法分析之后將會變成<id,1> <=> <id,2> <+> <id,3> <*> <60>
上面的賦值語句經(jīng)過一輪完整的編譯過程如下表所示

translation of an assignment statement

語法分析(syntax analysis或者parsing)

作用:在詞法分析基礎上根據(jù)語法規(guī)則把單詞符號組成各類的語法單位诀蓉,例如短語栗竖,句子,程序塊等渠啤。
過程:語法分析器利用詞法分析器產(chǎn)生的token form中的第一部分token name來創(chuàng)建語法樹狐肢,目的是用來表示token stream的語法結構。一個典型的語法樹的內節(jié)點代表一個操作符沥曹,其子節(jié)點代表的是作用于操作符的操作數(shù)份名,樣本可參看Figure 1.7中的語法分析部分。
產(chǎn)出:語法樹
構造方法:推導和規(guī)約架专。用上下文無關文法和描述程序語言的語法結構同窘。

語義分析

作用:利用語法樹和符號表來檢查源程序是否符合程序語言的規(guī)則玄帕,其中一個重要的過程就是類型檢查部脚。
產(chǎn)出:語法樹(注意語義分析產(chǎn)生的語法樹和語法分析產(chǎn)生的語法樹的不同)
例:螞蟻帶上眼鏡。這句話語法正確裤纹,但是語義卻是錯誤的委刘。

中間代碼生成

暫略丧没。

代碼優(yōu)化

暫略。

目標代碼生成

暫略锡移。

符號表管理

暫略呕童。

4.過程組合
在實際編寫編譯器的過程中,可以不必按照上訴所說把每一步分的那么精細淆珊,可以將有些在邏輯上相同的步驟合并成一個稱為遍的過程中夺饲,例如將詞法分析、語法分析施符、語義分析組合成一個遍往声,代碼優(yōu)化組合成另外一個遍,等等戳吝。這樣組合分類的好處是:
- 邏輯清晰
- 增加代碼移植性
- 交叉語言:將前端組合成一個遍浩销,把用語言A寫的程序分析完成之后,后端我使用能夠產(chǎn)生B語言的后端听哭,這樣就可以將一個語言編寫的程序編譯成適合其它機器使用的程序了慢洋。或者將許多不同語言編程的程序進行前端翻譯陆盘,完成之后統(tǒng)一使用一個相同后端編譯普筹,這樣就實現(xiàn)了多種語言對特定機器的編譯過程。(類似Java的bytecode的生成和作用)

5.語言的發(fā)展和分類
第一代語言:機器語言
第二代語言:匯編語言
第三代語言:高級語言礁遣,例如C,C++,Fortran,Cobol,Lisp
第四代語言:應用語言斑芜,例如SQL for databse queries , Postscript for text formatting
第五代語言:邏輯語言,例如Prolog

命令式語言:告訴計算機應該如何一步步做來完成目標祟霍。例如C,C++
聲明式語言:告訴計算機做什么來完成目標杏头。例如SQL,包括后面的函數(shù)式語言和邏輯語言
區(qū)別:舉個例子沸呐,隨便寫一個SQL的selecet語句就明白了醇王。
函數(shù)式語言:ML,Haskell
邏輯語言:prolog
馮洛伊曼語言
面向對象語言:C++
腳本語言:shell

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末崭添,一起剝皮案震驚了整個濱河市寓娩,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌呼渣,老刑警劉巖棘伴,帶你破解...
    沈念sama閱讀 217,542評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異屁置,居然都是意外死亡焊夸,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,822評論 3 394
  • 文/潘曉璐 我一進店門蓝角,熙熙樓的掌柜王于貴愁眉苦臉地迎上來阱穗,“玉大人饭冬,你說我怎么就攤上這事【窘祝” “怎么了昌抠?”我有些...
    開封第一講書人閱讀 163,912評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長鲁僚。 經(jīng)常有香客問我炊苫,道長,這世上最難降的妖魔是什么冰沙? 我笑而不...
    開封第一講書人閱讀 58,449評論 1 293
  • 正文 為了忘掉前任劝评,我火速辦了婚禮,結果婚禮上倦淀,老公的妹妹穿的比我還像新娘蒋畜。我一直安慰自己,他們只是感情好撞叽,可當我...
    茶點故事閱讀 67,500評論 6 392
  • 文/花漫 我一把揭開白布姻成。 她就那樣靜靜地躺著,像睡著了一般愿棋。 火紅的嫁衣襯著肌膚如雪科展。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,370評論 1 302
  • 那天糠雨,我揣著相機與錄音才睹,去河邊找鬼。 笑死甘邀,一個胖子當著我的面吹牛琅攘,可吹牛的內容都是我干的。 我是一名探鬼主播松邪,決...
    沈念sama閱讀 40,193評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼坞琴,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了逗抑?” 一聲冷哼從身側響起剧辐,我...
    開封第一講書人閱讀 39,074評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎邮府,沒想到半個月后荧关,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,505評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡褂傀,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,722評論 3 335
  • 正文 我和宋清朗相戀三年忍啤,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片紊服。...
    茶點故事閱讀 39,841評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡檀轨,死狀恐怖,靈堂內的尸體忽然破棺而出欺嗤,到底是詐尸還是另有隱情参萄,我是刑警寧澤,帶...
    沈念sama閱讀 35,569評論 5 345
  • 正文 年R本政府宣布煎饼,位于F島的核電站讹挎,受9級特大地震影響,放射性物質發(fā)生泄漏吆玖。R本人自食惡果不足惜筒溃,卻給世界環(huán)境...
    茶點故事閱讀 41,168評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望沾乘。 院中可真熱鬧怜奖,春花似錦、人聲如沸翅阵。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,783評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽掷匠。三九已至滥崩,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間讹语,已是汗流浹背钙皮。 一陣腳步聲響...
    開封第一講書人閱讀 32,918評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留顽决,地道東北人短条。 一個月前我還...
    沈念sama閱讀 47,962評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像才菠,于是被迫代替她去往敵國和親慌烧。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,781評論 2 354

推薦閱讀更多精彩內容