編譯原理(一)緒論概念&文法與語言


緒論概念&文法與語言

以老師PPT為標准,借鑒部分教材內容,AlvinZH學習筆記。

緒論基本概念

1. 低級語言:字位碼、機器語言、匯編語言。與特定的機器有關,功效高,但使用復雜、繁瑣、費時、易出錯。

高級語言:Fortran、Pascal、C語言等。不依賴具體機器,移植性好,對用戶要求低,易使用,易維護等。

2. 把高級程序設計語言翻譯成匯編語言后機器語言的工作稱為編譯,完成翻譯工作的軟件系統稱為編譯程序編譯器

3. 源程序:程序語言處理系統的輸入程序,用匯編語言或高級語言編寫的程序。編寫輸入程序的語言稱為源語言

程序語言處理系統的輸出程序稱為目標程序(目標代碼),相應的語言稱為目標語言。目標語言可以是機器語言或匯編語言,也可以是介於低級語言和高級語言之間的中間語言

能對編譯得到的中間語言進行解釋執行的程序稱為解釋程序。常見中間語言:四元式、三元式、逆波蘭表示。優點:便於做優化處理;便於編譯程序的移植。

4. 通常將某種語言程序(源程序)變換為與之等價的語言程序的程序(目標程序)通稱為翻譯程序變換程序;匯編程序、編譯程序以及各種變換程序的總稱。

源語言為匯編語言、目標語言為機器原因的翻譯程序稱為匯編程序,其翻譯過程稱為匯編。

5. 編譯過程五個基本階段:詞法分析;語法分析;語義分析、生成中間代碼;代碼優化;生成目標程序。

編譯程序的七個邏輯部分:語法分析程序;詞法分析程序;語義分析、生成中間代碼;代碼優化;生成目標程序;符號表管理;錯誤處理。

6. :對源程序或源程序的中間形式從頭到尾掃描一遍,並作有關的加工處理,生成新的與源程序的中間形式或目標程序。一遍掃描的編譯程序以語法分析程序為核心。分遍將編譯程序前端和后端分開,為編譯程序的移植創造條件;主要缺點是增加了不少的重復性工作。

7. 前端和后端

前端:通常將與源程序有關的編譯部分稱為前端。包括詞法分析、語法分析、語義分析、中間代碼生成、代碼優化-------分析部分。特點:與源語言有關。

后端:與目標機有關的部分稱為后端。目標程序生成(與目標機有關的優化)-------綜合部分。特點:與目標機有關。

文法與語言

1. 符號串知識

  • 符號串集合冪運算: \(A^0={ε}\), \(A^1=A\), \(A^2=AA\), ...
  • 符號串集合閉包運算。正閉包: \(A^+=A^1∪A^2∪A^3∪...\)。閉包: \(A^*=A^0∪A^+\)

2. 文法:文法是對語言結構的定義與描述。即從形式上用於描述和規定語言結構的稱為"文法"(或稱為"語法")。

文法定義四元組:\(G=(Vn,Vt,P,Z)\)\(V_n\)為非終結符號集,\(V_t\)為終結符號集,二者統稱字匯表(V);P為產生式(規則)集合;Z為開始符號(識別符號)。

3. 推導:\(==>\)。一步或多步推導:\(=+=>\)。零步或多步推導:\(=*=>\)。規范推導:\(=|=>\)

最右推導:若符號串中有兩個以上的非終結符,先推右邊的。最左推導類似定義。最右推導也稱規范推導,由規范推導的句型稱為規范句型。

規約是推導的逆過程。最左規約與最右推導互逆,最左規約也稱規范規約。對句型中最左簡單短語(句柄)進行的規約稱為規范規約。

語法樹中,語法成分在形式語言中又稱為“非終結符”,單詞符號在形式語言中又稱為“終結符號”。

4. 語言形式定義:

  • 句型:Z => x,且x ∈ V。直觀理解,語法樹從左至右的一個序列。
  • 句子:Z =+> x,且x ∈ Vt*。直觀理解,語法樹從左至右終結符序列,是句型的一個特例。
  • 語言:由文法G[Z]產生的所有句子的集合,記為L(G[Z])。

文法與語言的關系:多對一。

5. 遞歸規則:左遞歸、右遞歸、自嵌入遞歸。遞歸文法的優點:可用有窮條規則,定義無窮語言。

左遞歸文法不能用自頂向下的方法來進行語法分析,會造成死循環。

6. 句型的短語、簡單短語和句柄

已知文法G[Z],\(w::=xuy ∈V^+\) 為該文法的句型。

  • 短語\(Z =*> xUy\),且U =+> u, 則u是句型w相對於非終結符U的短語。直觀理解,短語是句型中的某個非終結符所能推出的符號串。
  • 簡單短語:Z =*> xUy,且U => u。
  • 句柄:最左的簡單短語。

利用句型對應的語法樹,某子樹的末端結點按自左向右順序為句型中的符號串,該符號串為該句型的相對於該子樹根的短語

7. 二義性文法----不可判定

  • 文法所定義的某個句子存在兩棵不同的語法樹。
  • 文法中存在某個句子,它有兩個不同的規范(最右)推導。
  • 文法中存在某個句子,它有兩個不同的規范(最左)規約,即在規約中某些規范句型的句柄不唯一。

8. 文法實用限制

  • 有害規則:U => U。引起二義性。
  • 多余規則:推導過程中始終用不到或者一旦使用無法推出任何終結符號串。

8. 文法的其他表示

  • 擴充的BNF表示
  • 語法圖

9. 文法和語言分類:0型,1型,2型,3型。區別在於對產生式施加不同的限制。

  • 0型:規則中存在 \(u::=v\),其中u∈V+且至少包含一個Vn,v∈V*。短語結構文法,左部為至少包含一個Vn的符號串,右部為符號串(可為空)。由圖靈機接受。
  • 1型:規則中存在 \(xUy ::= xuy\),其中U∈Vn,x、y、u∈V*。上下文敏感(上下文有關)文法,只有在上下文x...y中才可重寫。由一種線性界限的圖靈機接受。
  • 2型:規則中存在 \(U ::= u\),其中U∈Vn,u∈V*。上下文無關文法,與BNF表示等價。由下推自動機接受。
  • 3型:規則中存在 \(U ::= t\)\(U ::= Wt\)(左線性)【\(T::>tW\)(右線性)】 ,U、W∈Vn,t∈Vt。正則文法。由有窮自動機接受。(左線性和右線性不能同時出現)
  • L0>L1>L2>L3,即4類文法從0型到3型是逐漸增加限制的。

四種文法類型的關系及判斷方法

四種文法區別在於規定產生式的左邊和右邊的字符的組成規則不同。明確四種文法從0型到3型,其規則和約定越來越多,限制條件也越來越多,所以,我們判斷時可以從最復雜的3型進行判斷,3->2->1->0依次向下判斷。

快速判斷3型文法

  • 左邊必須只有一個字符,且必須是非終結符(∈Vn)。(與2型文法的第一點相同)
  • 右邊最多只能有兩個字符,且當有兩個字符時必須有一個為終結符而另一個為非終結符。當右邊只有一個字符時,此字符必須為終結符。
  • 左線性和右線性不能同時出現。對於所有右邊有兩個字符的產生式,終結符和非終結符的相對位置一定要固定,要么全為 非終結符+終結符,要么全為 終結符+非終結符

3型文法實在2型文法的基礎上滿足:A→α|αB(右線性)或A→α|Bα(左線性)。

快速判斷2型文法

  • 左邊必須有且僅有一個非終結符。
  • 右邊含有若干個終結符和非終結符(只要是有限的就行,沒有個數限制)。 (與1型文法的第二點相同)

2型文法是在1型文法的基礎上,再滿足:每一個α→β中都有α是非終結符(條件1)。

快速判斷1型文法

  • 左邊可以含有一個、兩個或兩個以上的字符,但其中必須至少有一個非終結符。
  • 右邊含有若干個終結符和非終結符(只要是有限的就行,沒有個數限制)。

1型文法是在0型文法的基礎上滿足:每一個α→β,都有|β|>=|α|。有一特例:α→ε也滿足1型文法。

快速判斷0型文法

不用判斷,只要能描述出來,都屬於0型文法。

參考鏈接:http://www.360doc.com/content/17/0626/11/37475013_666625064.shtml


引用說明

- 邵老師課堂PDF
- 《編譯原理級編譯程序構造》


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM