I . 語法組成
上下文無關語法 組成 : 由 {V,Σ,R,S} 四部分組成 ;
變量集 V : 有限的變量集合 ;
終端字符集 Σ : 有限的終端字符組成的集合 ; 相當於常量的含義 , 與變量相對 ;
規則集 R : 有限的規則組成的集合 , 規則規定如何進行代換操作 , 規定 變量 , 終端字符 , 字符串變量 等 ;
開始變量 S : 該變量作爲開始變量 ;
II . 規則
規則 簡介 :
① 已知條件 : 假設 u,v,w 是 變量 ( 變元 ) 或 終端字符集 ( 常量 / 常元 ) ;
② 規則描述 : 規則是一個箭頭 , A→w , A 是變元 , w 是 變元 和 常元 組成的終端字符 ;
③ 規則用法 : 在字符串中 , 根據 A→w 規則進行替換 , 只需要將 A 變元替換成 w 字符串即可 ;
④ 規則示例 : uAv 中使用上述規則進行替換 , 將 A 替換成 w , 替換結果是得到新字符串 uwv ;
uAv⇒uwv
III . 語法
1 . 有限次規則替換 : u⇒∗v 表示有限多次替換後 , 每一步替換的臨時結果序列組成集合 {u1,u2,⋯,uk} , 最終結果是 終端字符 ;
2 . 有限次規則替換 步驟 :
- u 根據某規則進行替換得到 u1 ;
- u1 根據某規則進行替換得到 u2 ;
- ⋮
- uk 根據某規則進行替換得到 v ;
3 . 最終規則替換結果要求 : v 中不包含變元 , 全部由 終端字符 ( 常元 ) 組成的 字符串 ;
v 是由 u 生成的 ;
4 . 語法定義 : 從開始變元 , 使用規則逐步替換 , 替換到最後 , 將所有 終端字符組成字符串 放在一個集合中 , 稱爲語法生成的語言 ;
L(G)={w∈Σ∗:S⇒∗w}
IV . 語法示例
1 . 語法組成部分 : G3=({S},{a,b},R,S) 其組成如下 :
2 . 規則 R 描述 :
S→aSb∣SS∣ε
- S 變量 可以使用 aSb 字符串替換 ;
- S 變量 可以使用 SS 字符串替換 ;
- S 變量 可以使用 ε 字符串替換 ;
3 . 規則替換過程 :
① S 是開始變量 , 可以使用 aSb 替換 :
S⇒aSb
② 使用 aSb 替換 S :
S⇒aSb⇒aaSbb
③ 使用 SS 替換 S :
S⇒aSb⇒aaSbb⇒aaSSbb
④ 使用 aSb 替換第一個 S :
S⇒aSb⇒aaSbb⇒aaSSbb⇒aaaSbSbb
⑤ 使用 ε 替換第一個 S :
S⇒aSb⇒aaSbb⇒aaSSbb⇒aaaSbSbb⇒aaabSbb
⑥ 使用 aSb 替換 S :
S⇒aSb⇒aaSbb⇒aaSSbb⇒aaaSbSbb⇒aaabSbb⇒aaabaSbbb
⑦ 使用 ε 替換 S :
S⇒aSb⇒aaSbb⇒aaSSbb⇒aaaSbSbb⇒aaabSbb⇒aaabaSbbb⇒aaababbb
最終得到 aaababbb 字符串 , 該字符串全部由終端字符構成 , 是從 S 開始狀態出發 , 按照 R 規則替換得來的 ;
稱該字符串由 語法 G3 生成的 ;
V . 語法簡寫形式
語法可以使用下面的形式簡單表示 , 沒有必要使用繁瑣的形式 , 可以使用約定的簡寫形式 ;
約定寫法 :
- A→0A1
- A→B
- B→l
開始狀態約定 : 左上方的變元 A 約定是 開始變元 ;
變元約定 : 大寫字母 A,B 約定爲 變元 ;
終端字符約定 : 小寫字母 約定爲 終端字符 ;
VI . 語法分析樹
語法分析樹 : 字符串生成的過程 , 可以寫成語法分析樹 ;
將上述 簡寫的 約定語法描述 , 生成 終端字符構成的字符串 ;
1 . 開始狀態 : A , 使用 0A1 替換 A ;
A⇒0A1
當前語法分析樹 :
2 . 使用 0A1 替換 A ;
A⇒0A1⇒00A11
當前語法分析樹 :
3 . 使用 0A1 替換 A ;
A⇒0A1⇒00A11⇒000A111
當前語法分析樹 :
4 . 使用 B 替換 A ;
A⇒0A1⇒00A11⇒000A111⇒000B111
當前語法分析樹 :
5 . 使用 l 替換 B ;
A⇒0A1⇒00A11⇒000A111⇒000B111⇒000l111
當前語法分析樹 :
6 . 最終得到的字符串爲 000l111 ;
VII . 代數表達式 語法
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 代替 ;