I . 代數表達式 語法
1 . 代數表達式 語法 : G4=(V,A,R,Expression) 是代數表達式語法 ;
① 終端字符集 : A={a,+,×,()} ;
② 變量集 : V={Expression,Term,Factor} ;
- Expression 是表達式 ;
- Term 是項 ;
- Factor 是因子 ;
2 . Expression 表達式 規則 :
Expression→Expression+Term∣Term
Expression ( 表達式 ) 可以通過 Expression+Term∣Term 代替 ;
3 . Term 項 規則 :
Term→Term×Factor∣Factor
Term 項 可以通過 Term×Factor∣Factor 代替 ;
4 . Factor 因子 規則 :
Factor→Expression∣a
Factor 因子 可以通過 Expression∣a 代替 ;
II . 代數表達式 語法 示例
爲字符串 (a+a)×a 構建 語法分析樹 ;
1 . 起始狀態 : 語法的起始狀態是 Expression , 根據 Expression→Expression+Term∣Term 規則 , Expression 可以使用 Term 替換 , 直接從起始狀態 , 使用 Term 替換 Expression ;
2 . (a+a)×a 字符串的語法分析樹 :
符號 : 其中有 × 乘號 ;
語法分析樹 : (a+a)×a 中間有 × , 帶有 × 乘號的替換規則爲 Term→Term×Factor∣Factor , 顯然該項很顯然是一個 Term 項 ;
3 . 根據上述 Term→Term×Factor 可知 , Term 是由 Term×Factor 進行替換的 , 左側的 (a+a) 是一個 Term , 右側的 a 是一個 Factor ;
4 . 根據 Factor→Expression∣a 規則 , 右側的 Factor 直接使用 a 進行替代 , 可得如下語法分析樹 :
5 . 想辦法將左側的 Term 替換成 (a+a) :
加法只能是 Expression , 先替換成 Expression ;
6 . 這裏先使用 Factor 替換 Term : 使用規則 Term→Term×Factor∣Factor ;
7 . 在使用 Expression 替換 Factor : 使用規則 Factor→Expression∣a ;
8 . 使用 Expression+Term 替換 Expression : 使用規則 Expression→Expression+Term∣Term ;
9 . 使用 Term 替換 左側的 Expression : 使用規則 Expression→Expression+Term∣Term ;
10 . 使用 Factor 替換左側的 Term : 使用規則 Term→Term×Factor∣Factor ;
11 . 使用 a 替換左側的 Factor : 使用規則 Factor→Expression∣a ;
12 . 使用 Factor 替換右側的 Term : 使用規則 Term→Term×Factor∣Factor ;
13 . 使用 a 替換右側的 Factor : 使用規則 Factor→Expression∣a ;
最終的 語法分析樹爲 :
此時可以得到語法分析樹 ; 該語法分析樹是一個代數表達式 ; 將該語法分析樹寫出 , 即可理解 上下文無關 語法 ;
代數表達式就是上下文無關的語法 ;
III . 設計 上下文無關語法
給定語言 , 設計上下文無關語法 , 使用該語法可以生成該語言 ;
上下文無關語法 設計技巧 : 將複雜的語言分解 , 化整爲零 , 針對每個部分設計上下文無關的語法 , 最終將這些語法合併在一起 ;
上下文無關語法 與 自動機 : 如果給定的語言是正則語言 , 是由正則表達式表達的 , 能夠找到一個自動機可以識別該語言 , 首先將語言轉換成自動機 , 將自動機轉化爲上下文無關的語法 ;
IV . 確定性有限自動機 DFA 轉爲 上下文無關語法
1 . 確定性有限自動機 ( DFA ) 轉爲 上下文無關語法 ( CFG ) : 將 確定性有限自動機 ( DFA ) 的指令 , 轉爲 對應的 上下文無關語法 ( CFG ) 規則 :
δ(qi,a)=qj⇒Ri→aRj
δ(qi,a)=qj 表示 qi 狀態下 , 讀取字符 a , 跳轉到 qj 狀態 ;
2 . 自動機的 狀態跳轉 轉換成 規則 示例 : 上圖中的 確定性有限自動機 , 開始狀態 A 讀取 1 字符 轉化成 B 狀態 , 表示成規則就是
RA→1RB
3 . 自動機的狀態 A 讀取 字符 a 轉換成另一個狀態 B , 都可以轉換成對應的規則 RA→aRB ;
4 . 計算能力對比 : 上下文無關語法 的計算能力 要大於等於 自動機的計算能力 ;