上下文無關文法與PDA的等價性
PDA我們之前講了有兩種形式:一種叫做以終結狀態 為結束標記的PDA;
還有一種叫做以空棧 為結束標記的PDA。並且前面也已經講過這兩種PDA是等價的。
這個化簡之后,b在棧的最下面。
CFG轉化成PDA |PDA轉化成CFG
首先要知道 CFG是4元組,而PDA是7(6)元組。CFG的四元組是\(<V_N,V_T,P,S>\),PDA(在NFA的基礎上構成)的七元組表示是:\(<Q,\Sigma,\delta,\Gamma(棧符號表),q_0,Z_0(棧開始符號),F>\) 其中要是以棧空 判別的PDA,則是六元組,沒有(F:狀態結束)
難點就是上面的七元組與四元組 的元素的對應關系
A選擇產生式還是有可能產生回溯。。上面這幅圖是避免回溯的理想情況。
如果棧頂是終結符,我們就是用產生式 逆向替換,直到棧頂是終結符;如果棧頂是終結符,我們就可以考慮和輸入符號進行匹配了。
如果讀入 \(\epsilon\) ,換產生式即可;如果讀入 終結符,匹配,彈出。
棧頂是變量的話,就壓棧(替換);棧頂是常量的話,就彈棧(匹配)
CFG轉換成PDA的套路如下:
所有的CFG都可以如下形成PDA。3個狀態即可搞定
棧符號表是原來文法字母表和狀態集合 的並集
一個狀態上處理兩種情況,一種是棧頂元素是變量,一種棧頂元素是常量
以空棧為結束,寫六元式;
以終止狀態為結束,寫七元式
利用下推自動機進行自頂向下的分析,檢查一個句子的最左推導過程
以棧為空為結束的下推自動機對文法的分析過程就是自頂向下語法分析過程。
瞬態移動角度對句子分析
PDA轉CFG?
先來回顧一下,DFA轉RG中的右線性文法。
基本思想:RG的推導對應DFA的移動
DFA五元組
RG四元組(文法都是四元組,處理裝置\自動機不同的類型,元數不一樣)
在這里,我們會認為 \(V_N ~ = ~ Q\) ,只有這樣我們才能由自動機得到文法
上面ppt最后一行就是 由自動機的轉移函數 得到 文法的規則
注意到:我們正規文發的右線性文法是 \(A->aB~,A->a\) 這兩種類型。區別在於到達的狀態 \(p\) 是否是終止狀態。
由上面的過程得到啟發,可以得到CFG
棧的升降都是對稱,這也可以理解成為什么可以解決對稱句子
\(A_{13}\) 才是一個變量,不能像DFA轉RG那樣得到變量
這種\(A_{ij}\) 就是新的CFG的變量,但是狀態往往非常多,如上面,就達到 \(8 * 8=64\) 個\(A_{ij}\) 狀態(簡化后的PDA的狀態數形成)
對於第一種: 找對稱的,不用管中間的