编译原理PPT总结Word格式.docx

上传人:b****8 文档编号:22411600 上传时间:2023-02-04 格式:DOCX 页数:27 大小:1.81MB
下载 相关 举报
编译原理PPT总结Word格式.docx_第1页
第1页 / 共27页
编译原理PPT总结Word格式.docx_第2页
第2页 / 共27页
编译原理PPT总结Word格式.docx_第3页
第3页 / 共27页
编译原理PPT总结Word格式.docx_第4页
第4页 / 共27页
编译原理PPT总结Word格式.docx_第5页
第5页 / 共27页
点击查看更多>>
下载资源
资源描述

编译原理PPT总结Word格式.docx

《编译原理PPT总结Word格式.docx》由会员分享,可在线阅读,更多相关《编译原理PPT总结Word格式.docx(27页珍藏版)》请在冰豆网上搜索。

编译原理PPT总结Word格式.docx

将(6)代入

(1)式中的A,得

Z=0(0+01)*0

即正规文法G[Z]所生成语言的正规式是:

R=0(0|01)*0

例2设有正规文法G:

AaB|bB

BaC|a|b

CaB

A=aB+bB

(1)

B=aC+a+b

(2)

C=aB(3)

将(3)代入

(2)中的C得

B=aaB+a+b(4)

对(4)使用求解规则得

B=(aa)*(a+b)(5)

(5)代入

(1)中的B得

A=(a+b)(aa)*(a+b)

即正规文法G[A]所生成语言的正规式是:

R=(a|b)(aa)*(a|b)

2.正规式到正规文法的转换:

(1)令VT=Σ

(2)对任何正规式R选择一个非终结符Z生成规则ZR并令S=Z。

(3)若a和b都是正规式,对形如Aab的规则转换成AaB和Bb两规则,其中B是新增的非终结符。

(4)对已转换的文法中,形如Aa*b的规则,进一步转换成AaA|b。

(5)不断利用规则(3)和(4)进行变换,直到每条规则最多含有一个终结符为止。

例1将R=(a|b)(aa)*(a|b)转换成相应的正规文法。

解:

令A是文法开始符号,根据规则

(2)变换为:

A(a|b)(aa)*(a|b)

根据规则(3)变换为:

A(a|b)B

B(aa)*(a|b)

对B根据规则(4)变换为

BaaB|a|b

根据规则(3)变换为

3.确定有限自动机(DFA)的定义:

确定的有限自动机DFAM是一个五元式

M=(S,,δ,s0,F)

(1)S是一个非空有限集,它的每个元素称为一个状态

(2)是一个有穷字母表,它的每个元素称为一个输入符号,所以也称为输入符号字母表

(3)δ是状态转换函数,是在S×

→S上的单值映射。

δ(s,a)=s’意味着:

当先行状态为s、输入字符为a时,将转到下一状态s’。

我们称s’为s的一个后继状态。

(4)s0∈S,是唯一的一个初态

(5)FS,是一个终态集(可空),终态也称可接受状态或结束状态。

例如有DFAM=({0,1,2,3},{a,b},δ,0,{3})其中δ定义为:

δ(0,a)=1δ(0,b)=2δ(1,a)=3

δ(1,b)=2δ(2,a)=1δ(2,b)=3

δ(3,a)=3δ(3,b)=3

其它表示形式:

状态转换矩阵和状态转换图

NFA和DFA的不同在于:

1)δ的值域是S的子集

2)开始状态有不止一个

3)在NFA中每个结点可射出若干条弧与别的结点相连接,每条弧用∑中的一个正规式做标记。

例如NFAM=({0,1,2,3,4},{a,b},δ,{0},{1,2})

其中:

δ(0,a)={0,3}δ(0,b)={0,4}

δ(1,a)={1}δ(1,b)={1}

δ(2,a)={2}δ(2,b)={2}

δ(3,a)={1}δ(3,b)=φ

δ(4,a)=φδ(4,b)={2}

状态转换矩阵和状态转换图:

例1试构造识别语言R=(a|b)*abb的NFAN,使L(N)=L(R)。

首先将R表示成如下拓广转换图

4.从NFAM构造正规式r举例

从NFAM构造正规式r举例:

5.由NFA确定DFA:

将NFA确定化为DFA的原因:

•使用NFA判定某个输入符号串的时候,可能出现不确定的情况:

不知道下面选择那个状态。

如果选择不好,该输入符号串可能不能到达终止状态。

但是,我们不能说该输入符号串不能被该NFA接受

•如果通过尝试的方法,不断试探来确定输入符号串是否可被接受,那么判定的效率将降低。

解决的方法是将NFA转换为等价的DFA

例1构造下述文法G[Z]的有穷自动机。

Z→0AA→0A|0BB→1A|ε解:

f(Z,0)=Af(Z,1)=Φf(z,ε)=Φ

f(A,0)=A,Bf(A,0)=A,Bf(A,1)=Φf(A,ε)=Φ

f(B,0)=Φff(B,0)=Φf(B,1)=Af(B,ε)=D

例4.设字母表Σ={a,b},给出Σ上的正规式

R=b*ab(b|ab)*

1.试构造状态最小化的DFAM,使得

L(M)=L(R)。

2.求右线性文法G,使L(G)=L(M)。

解:

对正规式R=b*ab(b|ab)*采用分列法构造NFA,

见下图。

对NFA采用子集法构造其等价的DFA的状态转换矩阵

对DFA采用分化的方法得到状态最小化的DFA

消去文法G[S]的左递归

求非终结符A的Follow集的算法

1.如果A是开始符号,#∈Follow(A)

2.若有产生式BαAaβ,a∈VT,则

把a加入到Follow(A)中;

3.若有产生式BαAXβ,X∈VN,则

把First(Xβ)中非ε元素加入Follow(A)中;

4.若BαA或BαAβ,β=>

ε,则

把Follow(B)加入到Follow(A)中;

5.连续使用上述规则,直到Follow(A)不再增大。

设文法G(S):

 

S→(L)|aS|a

L→L,S|S

(1)消除左递归和回溯;

(2)计算每个非终结符的First和Follow集;

•(3)构造预测分析表。

练习1:

文法G[V]:

V→N|N[E]E→V|V+EN→i

是否为LL

(1)文法,如不是,如何将其改造成LL

(1)文法。

LL

(1)文法的基本条件是不含左递归和回溯(公共左因子),而G[V]中含有回溯,所以先消除回溯得到文法G’[V]:

G’[V]:

V→NV’V’→ε|[E]

E→VE’E’→ε|+E

N→i

由LL

(1)文法的充要条件可证G’[V]是LL

(1)文法。

练习2:

有文法G[s]:

S→BAA→BS|dB→aA|bS|c

(1)证明文法G是LL

(1)文法。

(2)构造LL

(1)分析表。

(3)写出句子abccd的分析过程

(1)对于文法G[s]:

S→BAA→BS|dB→aA|bS|c

其FIRST集如下:

FIRST(B)={a,b,c};

FIRST(A)={a,b,c,d};

FIRST(S)={a,b,c}。

其FOLLOW集如下:

首先,FOLLOW(S)={#};

对S→BA有:

FIRST(A)\{ε}加入FOLLOW(B),即FOLLOW(B)={a,b,c,d};

对A→BS有:

FIRST(S)\{ε}加入FOLLOW(B),即FOLLOW(B)={a,b,c,d};

对B→aA有:

FOLLOW(B)加入FOLLOW(A),即FOLLOW(A)={a,b,c,d};

对B→bS有:

FOLLOW(B)加入FOLLOW(S),即FOLLOW(S)={#,a,b,c,d};

由A→BS|d得:

FIRST(BS)∩FIRST(d)={a,b,c}∩{d}=Φ;

由B→aA|bS|c得:

FIRST(aA)∩FIRST(bS)∩FIRST(c)={a}∩{b}∩{c}=Φ。

由于文法G[s]不存在形如β→ε的产生式,故无需求解形如FIRST(α)∩FOLLOW(A)的值。

也即,文法G[S]是一个LL

(1)文法。

(2)由G[s]:

S→BAA→BS|dB→aA|bS|c的

FIRST(B)={a,b,c};

FOLLOW(B)={a,b,c,d};

FIRST(A)={a,b,c,d};

FOLLOW(A)={a,b,c,d};

FIRST(S)={a,b,c}。

FOLLOW(S)={#,a,b,c,d}可构造LL

(1)预测分析表如下:

6.自下而上分析基本思想:

从输入串出发,逐步进行归约,直至归约到文法的开始符号,那么输入串是文法的句子,否则输入串有语法错误

或者说,从语法树的末端开始,步步向上归约,修剪语法树,直到只剩根结点

归约——用产生式的左部替代右部

关键——寻找每步句型中可归约串

寻找方式不同,分析方法不同

效率更高,对语法限制更少

直接短语(P85)

若S*αAδ且Aβ,则称β是句

αβδ相对于非终结符号A的直接短语一个句型的最左直接短语称为该句型的句柄素短语

(1)是一个短语

(2)至少包含一个终结符

(3)且除自身外不再包含其它素短语

FIRSTVT和LASTVT集合的定义

关于文法G中的每个非终结符P:

FIRSTVT(P)={a|P+a…,或者P+Qa…,

a∈VT且Q∈VN}

含义:

由P往下推导所有可能出现的首个终结符

例如:

有F→(E)|i,则(,i∈FIRSTVT(F)

有E→E+T,则EE+T,+∈FIRSTVT(E)

LASTVT(P)={a|P+…a,或者P+…aQ,

a∈VT且Q∈VN}

由P往下推导所有可能出现的最后一个终结符

有F→(E)|i,则),i∈LASTVT(F)

有E→E+T,则EE+T,+∈LASTVT(E)

连续使用下面两条规则,直到FIRSTVT(P)不再扩大为止

若有P→a…或P→Qa…,则a∈FIRSTVT(P)

若a∈FIRSTVT(Q),且有P→Q…,则a∈FIRSTVT(P)

即FIRSTVT(Q)加入FIRSTVT(P)

连续使用下面两条规则,直到LASTVT(P)不再扩大为止

若有P→…a或P→…aQ,则a∈LASTVT(P)

若a∈LASTVT(Q),且有P→…Q,则a∈LASTVT(P)

即把LASTVT(Q)中加入LASTVT(P)中

确定算符的优先关系,构造文法的算符优先表

若有A→…ab…或A→…aPb…,则a=b

若有A→…aP…,对b∈FIRSTVT(P),则a<

b

若有A→…Pb…,对a∈LASTVT(P),则a>

1.可归前缀是指A。

A规范句型的(可归)前缀B活前缀

C含有句柄的活前缀D句柄

2.若a为终结符,则A→α.aβ为A项目。

A移进B待约C规约D接受

3.LR分析器核心部分是一张分析表,该表由组成。

(D)

AACTION表BGOTO表CLL

(1)分析表DACTION表和GOTO表

4.算符优先分析法每次都是对进行规约。

(B)

A短语B最左素短语C素短语D句柄

5自下而上语法分析的基本思想是:

从待输入的符号串出发,利用文法的产生式步步向上规约,试图直至规约到文法的开始符号。

6最右推导也被称为规范推导,其所得到的句型称为规范句型。

7规范归约每次归约的是当前句型的句柄,算符优先文法每次归约的是当前句型的最左素短语。

8、LR(0)分析法的名字中,“L”的含义是从左到右扫描输入串,“R”的含义是构造一个最右推导的逆过程,“0含义是每步顶多向前检查0个输入字符。

9所谓素短语是指这样的一个短语,它至少含有一个终结符并且,除它自身之外不再含有任何更小的素短语。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 其它

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1