📅  最后修改于: 2020-11-26 10:21:11             🧑  作者: Mango
如果语法G是无上下文的,我们可以构建一个等效的不确定PDA,该PDA接受由上下文无语法G产生的语言。可以为语法G建立一个解析器。
同样,如果P是下推式自动机,则可以构造等效的上下文无关文法G
L(G)= L(P)
在接下来的两个主题中,我们将讨论如何从PDA转换为CFG,反之亦然。
输入-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,ε}}
输入-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中。