編譯原理(2):語言及其文法

聲明:本系列文章,是根據中國大學MOOC網 哈工大的編譯原理 這門課學習而成的學習筆記。

一、基本概念

字母表

字母表Σ 是一個有窮符號集合。字母表也稱爲符號集。

  • 符號:字母、數字、標點符號…
  • 例:ASCII 字符集,二進制字母表:{0,1},Unicode字符集

字母表上的運算

  1. 字母表與字母表的乘積
    在這裏插入圖片描述
  2. 字母表的 n次冪:長度爲 n 的符號串構成的集合
    在這裏插入圖片描述
  3. 字母表的正閉包:長度正數的符號串構成的集合
    在這裏插入圖片描述
  4. 字母表的克林閉包:任意符號串(長度可以爲零)構成的集合
    在這裏插入圖片描述

符號串

  • 串:由字母表中的符號組成的任何有窮序列。
  • 串 s 的長度,通常記作 |s| ,指 s 中符號的個數。 例:|aab|=3。
  • 空串是長度爲0 的串,用 ε 表示,| ε |=0。

串上的運算

  • 串的連接:如果 x 和 y 是串,那麼 x 和 y 的連接,是把 y 附加到 x 後面而形成的串,記作 xy。

     例如,如果 x=dog 且 y=house,那麼 xy=doghouse。
     空串是連接運算的單位元,即,對於任何串 s 都有, εs=sε=s。
    
  • 串的冪運算:將 n 個 串連接起來。
    在這裏插入圖片描述

二、文法的定義

在這裏插入圖片描述
文法的形式化定義
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
產生式的簡寫
在這裏插入圖片描述
符號約定

  • 終結符

·字母表中排在前面的小寫字母,如a、b、c
·運算符,如+、乘等
·標點符號,如括號、逗號等
·數字0、1、. . . 、9
·粗體字符串,如id、if等

  • 非終結符

·字母表中排在前面的大寫字母,如A、B、C
·字母S。通常表示開始符號
·小寫、斜體的名字,如expr、stmt等
·代表程序構造的大寫字母。如E(表達式)、T(項) 和F(因子)

在這裏插入圖片描述

三、語言的定義

推導和歸約
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
句型和句子
在這裏插入圖片描述
在這裏插入圖片描述

語言的形式化定義

由文法 G 的開始符號 S 推導出的所有句子構成的集合稱爲文法 G 生成的語言,記作 L(G)。
在這裏插入圖片描述

語言上的運算
在這裏插入圖片描述

四、文法的分類

0型文法,無限制文法
在這裏插入圖片描述
1型文法,上下文有關文法
在這裏插入圖片描述
2型文法,上下文無關文法
在這裏插入圖片描述
3型文法,正規文法
在這裏插入圖片描述
四種文法之間的關係
在這裏插入圖片描述
在這裏插入圖片描述

五、CFG的分析樹

在這裏插入圖片描述
分析樹是推導的圖形化表示
在這裏插入圖片描述
在這裏插入圖片描述
句型的短語

給定一個句型,其分析樹中的每一顆子樹的邊緣稱爲該句型的一個短語
如果子樹只有父子兩代節點,那麼這課子樹的邊緣稱爲該句型的一個直接短語

二義性文法

如果一個文法可以爲某個句子生成多棵分析樹, 則稱這個文法是二義性的

二義性文法的判定

對於任意一個上下文無關文法,不存在一個算法, 判定它是無二義性的;
但能給出一組充分條件, 滿足這組充分條件的文法是無二義性的
滿足,肯定無二義性
不滿足,也未必就是有二義性的

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章