📜  PDA和上下文无关的语法

📅  最后修改于: 2020-11-26 10:21:11             🧑  作者: Mango


如果语法G是无上下文的,我们可以构建一个等效的不确定PDA,该PDA接受由上下文无语法G产生的语言。可以为语法G建立一个解析器。

同样,如果P是下推式自动机,则可以构造等效的上下文无关文法G

L(G)= L(P)

在接下来的两个主题中,我们将讨论如何从PDA转换为CFG,反之亦然。

查找与给定CFG对应的PDA的算法

输入-A CFG,G =(V,T,P,S)

输出-等效PDA,P =(Q,∑,S,δ,q 0 ,I,F)

步骤1-将CFG的生产转换为GNF。

步骤2 -PDA将只有一个状态{q}。

步骤3 -CFG的起始符号将成为PDA中的起始符号。

步骤4 -CFG的所有非端子将成为PDA的堆栈符号,CFG的所有端子将成为PDA的输入符号。

步骤5-对于形式为A→aX的每个生产式,其中a为末端, A为X,X为末端和非末端的组合,请生成跃迁δ(q,a,A)

问题

从以下CFG构造PDA。

G =({S,X},{a,b},P,S)

产品在哪里-

S→XS | ε,A→aXb | Ab | b

让等效的PDA,

P =({q},{a,b},{a,b,X,S},δ,q,S)

δ-

δ(q,ε,S)= {(q,XS),(q,ε)}

δ(q,ε,X)= {(q,aXb),(q,Xb),(q,ab)}

δ(q,a,a)= {(q,ε}}

δ(q,1,1)= {(q,ε}}

查找与给定PDA对应的CFG的算法

输入-A CFG,G =(V,T,P,S)

输出-等效PDA,P =(Q,∑,S,δ,q 0 ,I,F),这样语法G的非终结将为{X wx | w,x∈Q},开始状态为A q0,F

步骤1-对于每个w,x,y,z∈Q,m∈S和a,b∈∑,如果δ(w,a,ε)包含(y,m)并且(z,b,m)包含( x,ε),将生成规则X wx →a X yz b添加到语法G中。

步骤2-对于每个w,x,y,z∈Q,将生成规则X wx →X wy X yx添加到语法G中。

步骤3-对于w∈Q,将生成规则X ww →ε添加到语法G中。