文法化簡(CFG Simplification)

原文 https://www.tutorialspoint.com/automata_theory/cfg_simplification.htm

在上下文無關(guān)文法(CFG)中,可能出現(xiàn)所有符號都不需要進(jìn)行推導(dǎo)的情況惨好。另外渡贾,文法中可能含有空產(chǎn)生式(null production)和單產(chǎn)生式(unit production)。消除這些產(chǎn)生式和符號,就叫 CFG化簡 商叹∧屡浚化簡本質(zhì)上包含以下步驟:

  • CFG規(guī)約
  • 去除單產(chǎn)生式
  • 去除空產(chǎn)生式

規(guī)約文法

文法用兩個(gè)周期來規(guī)約

Phase 1 - 從文法 G 推導(dǎo)等價(jià)文法 G' , 每個(gè)變量導(dǎo)出一些終結(jié)符號窟却。(從開始符號開始推導(dǎo))

推導(dǎo)過程
Step 1 - 包含所有符號 W1昼丑,并初始化 i=1
Step 2 - 包含可以導(dǎo)出 Wi 的所有符號 Wi+1 夸赫。
Step 3 - 重復(fù) Step 2菩帝,直到 Wi+1 = Wi
Step 4 - 包含所有的含有 Wi 的產(chǎn)生式規(guī)則茬腿。

Phase 2 - 從文法 G' 推導(dǎo)等價(jià)文法 G''呼奢,對于每個(gè)出現(xiàn)在句法形式的符號。

推導(dǎo)過程
Step 1 - 包含所有符號 Y1切平,并初始化 i=1 握础。
Step 2 - 包含可以從 Yi 導(dǎo)出的所有符號 Yi+1 ,并包含應(yīng)用的所有產(chǎn)生式悴品。
Step 3 - 增加 i 禀综, 重復(fù) Step 2 郎哭,直到 **Yi+1 = Yi

問題

找到一個(gè)規(guī)約后的等價(jià)文法G菇存,包含以下產(chǎn)生式: P:
小寫是終結(jié)符號夸研。

S -> AC | B
A -> a
C -> c | BC
E -> aA | e

解決

Phase 1

T = { a, c, e}
W1 = { A, C, E} 從規(guī)則 A -> a,C -> c 和 E -> aA
W2 = { A, C, E} U { S } 從規(guī)則 S -> AC
W3 = { A, C, E, S } U ?
因?yàn)?W3 = W2依鸥,所以我們導(dǎo)出
G’ = { { A, C, E, S }, { a, c, e }, P, {S}}
也就是

S → AC
A → a
C → c 
E → aA | e

Phase 2

Y1 = { S }
Y2 = { S, A, C } 從規(guī)則 S → AC
Y3 = { S, A, C, a, c } 從規(guī)則 A → a and C → c
Y4 = { S, A, C, a, c }
因?yàn)閅3 = Y4亥至,所以我們推導(dǎo)出 G'' :
G” = { { A, C, S }, { a, c }, P, {S}}

S → AC
A → a
C → c

消除單產(chǎn)生式

任何產(chǎn)生式,具有 A -> B 的形式(A, B ∈ 非終結(jié)符) 就叫 單產(chǎn)生式 贱迟。

消除過程

Step 1 要消除 A -> B 姐扮,用 B -> x 的體添加到規(guī)則中 A -> x 。 [x ∈ 終結(jié)符衣吠, x 可以是 Null]
Step 2 從規(guī)則中刪除 A -> B 茶敏。
Step 3 重復(fù)步驟1直到所有的單產(chǎn)生式都被消除。

問題

從以下規(guī)則消除單產(chǎn)生式:

S → XY
X → a
Y → Z | b
Z → M
M → N
N → a

解決

文法中有三個(gè)單產(chǎn)生式:

Y → Z
Z → M
M → N

我們首先消除 M -> N 缚俏。

因?yàn)?N -> a 惊搏,我們添加 M -> a, 并且移去 N -> a忧换。

產(chǎn)生式變成了:

S → XY, X → a, Y → Z | b, Z → M, M → a, N → a

然后移去 Z -> M

因?yàn)?M -> a恬惯, 我們添加 Z -> a 并且移去 M -> a 。

現(xiàn)在變成了

S → XY, X → a, Y → Z | b, Z → a, M → a, N → a

現(xiàn)在我們移去 Y -> Z

因?yàn)?Z -> a亚茬, 我們添加 Y -> a 并且移去 Z -> a 酪耳。

現(xiàn)在變成

S → XY, X → a, Y → a | b, Z → a, M → a, N → a

現(xiàn)在 Z, M刹缝, N 不可到達(dá)碗暗, 所以我們?nèi)サ羲?/p>

最后產(chǎn)生式變成

S → XY
X → a
Y → a | b

消除空產(chǎn)生式

文法中含有 A → ε, 或者從 A開始最后到達(dá)ε梢夯, A->...->ε言疗。

消除過程

Step 1 - 找到所有產(chǎn)生ε的非終結(jié)符。
Step 2 - 對于所有產(chǎn)生式 A -> α厨疙, 構(gòu)建所有產(chǎn)生式 A -> β洲守。β是從α去掉一個(gè)或者多個(gè) A(步驟一中的)。
Step 3 - 將原產(chǎn)生式與Step 2的結(jié)果合并沾凄,并去除掉空產(chǎn)生式梗醇。

問題

從以下去除空產(chǎn)生式:

S → ASA | aB | b
A → B
B → b | ∈

解決

有兩個(gè)nullable, A 和 B 撒蟀。
我們首先消除 B -> ε

S -> ASA | aB | b | a
A -> B| b | ε
B -> b

現(xiàn)在消除 A -> ε

S→ASA | aB | b | a | SA | AS | S
A → B| b
B → b
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末叙谨,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子保屯,更是在濱河造成了極大的恐慌手负,老刑警劉巖涤垫,帶你破解...
    沈念sama閱讀 206,723評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異竟终,居然都是意外死亡蝠猬,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,485評論 2 382
  • 文/潘曉璐 我一進(jìn)店門统捶,熙熙樓的掌柜王于貴愁眉苦臉地迎上來榆芦,“玉大人,你說我怎么就攤上這事喘鸟〈倚澹” “怎么了?”我有些...
    開封第一講書人閱讀 152,998評論 0 344
  • 文/不壞的土叔 我叫張陵什黑,是天一觀的道長崎淳。 經(jīng)常有香客問我,道長愕把,這世上最難降的妖魔是什么拣凹? 我笑而不...
    開封第一講書人閱讀 55,323評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮礼华,結(jié)果婚禮上咐鹤,老公的妹妹穿的比我還像新娘拗秘。我一直安慰自己圣絮,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,355評論 5 374
  • 文/花漫 我一把揭開白布雕旨。 她就那樣靜靜地躺著扮匠,像睡著了一般。 火紅的嫁衣襯著肌膚如雪凡涩。 梳的紋絲不亂的頭發(fā)上棒搜,一...
    開封第一講書人閱讀 49,079評論 1 285
  • 那天,我揣著相機(jī)與錄音活箕,去河邊找鬼力麸。 笑死,一個(gè)胖子當(dāng)著我的面吹牛育韩,可吹牛的內(nèi)容都是我干的克蚂。 我是一名探鬼主播,決...
    沈念sama閱讀 38,389評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼筋讨,長吁一口氣:“原來是場噩夢啊……” “哼埃叭!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起悉罕,我...
    開封第一講書人閱讀 37,019評論 0 259
  • 序言:老撾萬榮一對情侶失蹤赤屋,失蹤者是張志新(化名)和其女友劉穎立镶,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體类早,經(jīng)...
    沈念sama閱讀 43,519評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡媚媒,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,971評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了涩僻。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片欣范。...
    茶點(diǎn)故事閱讀 38,100評論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖令哟,靈堂內(nèi)的尸體忽然破棺而出恼琼,到底是詐尸還是另有隱情,我是刑警寧澤屏富,帶...
    沈念sama閱讀 33,738評論 4 324
  • 正文 年R本政府宣布晴竞,位于F島的核電站,受9級特大地震影響狠半,放射性物質(zhì)發(fā)生泄漏噩死。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,293評論 3 307
  • 文/蒙蒙 一神年、第九天 我趴在偏房一處隱蔽的房頂上張望已维。 院中可真熱鬧,春花似錦已日、人聲如沸垛耳。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,289評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽堂鲜。三九已至,卻和暖如春护奈,著一層夾襖步出監(jiān)牢的瞬間缔莲,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,517評論 1 262
  • 我被黑心中介騙來泰國打工霉旗, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留痴奏,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,547評論 2 354
  • 正文 我出身青樓厌秒,卻偏偏與公主長得像读拆,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子简僧,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,834評論 2 345

推薦閱讀更多精彩內(nèi)容

  • 專業(yè)考題類型管理運(yùn)行工作負(fù)責(zé)人一般作業(yè)考題內(nèi)容選項(xiàng)A選項(xiàng)B選項(xiàng)C選項(xiàng)D選項(xiàng)E選項(xiàng)F正確答案 變電單選GYSZ本規(guī)程...
    小白兔去釣魚閱讀 8,977評論 0 13
  • 鏈接地址:https://www.tutorialspoint.com/compiler_design/compi...
    dannyvi閱讀 4,686評論 1 12
  • 編譯原理 第一章 引言 1.從面向機(jī)器的語言到面向人類的語言 匯編指令:用符號表示的指令被稱為匯編指令匯編語言:匯...
    SnorlaxSE閱讀 54,842評論 5 60
  • 一建椰、緒論 編譯程序 功能:高級pro轉(zhuǎn)低級目標(biāo)pro 形式編譯執(zhí)行轉(zhuǎn)obj在執(zhí)行,效率高跨平臺性差解釋執(zhí)行逐行解釋...
    rh_Jameson閱讀 3,552評論 0 10
  • 宇彤老師的教學(xué)讓我從一點(diǎn)不了解語言美學(xué)到漸漸地愛上語言美學(xué);宇彤老師的指導(dǎo)讓我從以前的粗糙急進(jìn)的嗓音蛻變到現(xiàn)在溫柔...
    云淡風(fēng)輕一閱讀 359評論 0 0