正則表達式與正則文法的等價性
- 對任意一個正則表達式,存在定義同語言的文法
- 對任意一個正則文法,存在定義同語言的表達式
正則表達式轉換爲等價的正則文法
- 步驟
- 引入開始符號 S,從如下正則定義式: Sr
- 按如下規則將Sr分解爲新的正則定義式,在過程中根據需要引入新的語法變量
- 分解規則 Ar
- 如果 r=,則將Ar分解爲A→B ,B→,B∈V
- 如果 r=,則將Ar分解爲A→A ,A→
- 如果 r=,則將Ar分解爲A→ ,A→
- 例子
正則文法轉換爲等價的正則表達式
- 步驟
- 爲正則文法的每個產生式構造一表達方程,這些中變量是文法G中的語法變量,各變量係數是正則表達式簡稱爲方程式,從而得到一個聯立方程組
- 用代入消元法去聯立方程組中除開始符號外的其他變量,最後得到關於開始符號 S的解: S = r,r即爲所求的正則表達式
- 構造方程式的規則
- 對形如 A 的產生式 ,構造方程A=。其中可以有形如 A ε
- 對形如 A 的產生式 ,構造方程A=
- 對形如 A 的產生式 ,構造方程A=,其中 B≠A 。
- 消元規則
- 如果有 A= ,B= ,則用 A=$(r_1|r_2|…|r_ n)(t_1|t_2|…|t_ m)C 進行換,其中 B≠A
- 如果有 A= ,B= ,則用 A=$(r_1|r_2|…|r_ n)(t_1|t_2|…|t_ m) 進行換,其中 B≠A
- 如果有A= , A= ,則用 A=進行替換
- 如果有A= , A= ,則用 A=進行替換
- 有 A=β1、A=β2…A=β h,則用 A=β1|β2|…|βh代替之。
- 例子