编译原理习题复习.docx

上传人:b****6 文档编号:5672822 上传时间:2022-12-31 格式:DOCX 页数:14 大小:2.98MB
下载 相关 举报
编译原理习题复习.docx_第1页
第1页 / 共14页
编译原理习题复习.docx_第2页
第2页 / 共14页
编译原理习题复习.docx_第3页
第3页 / 共14页
编译原理习题复习.docx_第4页
第4页 / 共14页
编译原理习题复习.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

编译原理习题复习.docx

《编译原理习题复习.docx》由会员分享,可在线阅读,更多相关《编译原理习题复习.docx(14页珍藏版)》请在冰豆网上搜索。

编译原理习题复习.docx

编译原理习题复习

构造FIRST()

对每一文法符号XVT∪VN构造FIRST(X)。

连续使用下面的规则,直至

每个FIRST集合不再增大为止:

(1)若XVT,则FIRST(X)={X}。

(2)若XVN,且有产生式X→a…,则把a加入到FIRST(X)中;若X→也

是一条产生式,则把也加到FIRST(X)中。

(3)若X→Y…是一个产生式且YVN,则把FIRST(Y)中的所有非-元素都

加到FIRST(X)中;若X→Y1Y2…Yk是一个产生式,Y1,…,Yi-1都是非终

结符,而且,对于任何j,1ji-1,FIRST(Yj)都含有,则把FIRST(Yi)

中的所有非-元素都加到FIRST(X)中;特别是,若所有的FIRST(Yj)均含

有,j=1,2,…,k,则把加到FIRST(X)中。

 

对文法G的任何符号串=X1X2…Xn构造

集合FIRST()。

(1)置FIRST()=FIRST(X1)\{};

(2)若对任何1ji-1,FIRST(Xj),则把

FIRST(Xi)\{}加至FIRST()中;特别是,

若所有的FIRST(Xj)均含有,1jn,则把

也加至FIRST()中。

显然,若=则

FIRST()={}。

 

构造FOLLOW(A)

•对于文法G的每个非终结符A构造FOLLOW(A)

的办法是,连续使用下面的规则,直至每个

FOLLOW不再增大为止:

(1)对于文法开始符号S,置#于FOLLOW(S)中;

(2)若A→B是一个产生式,则把FIRST()\{}加

至FOLLOW(B)中;

(3)若A→B是一个产生式,或AB是一个产生

式而(即FIRST()),则把FOLLOW(A)

加至FOLLOW(B)中。

构造分析表M[A,a]:

在对文法G的每个非终结符A及其任意候选都

构造出FIRST()和FOLLOW(A)之后,现在可

以用它们来构造G的分析表M[A,a]。

(1)对文法G的每个产生式A→执行第2步和第3

步;

(2)对每个终结符aFIRST(),把A→加至

M[A,a]中;

(3)若FIRST(),则对任何bFOLLOW(A),

把A→加至M[A,b]中。

(4)把所有无定义的M[A,a]标上“出错标志”。

算符优先关系:

FIRSTVT(P)

LASTVT(P):

终结符只有综合属性,由词法分析器提供

–非终结符既可有综合属性也可有继承属性

–对出现在产生式右边的继承属性和出现在产生式左边的综合属性都必须提供一个计算规则。

属性计算规则中只能使用相应产生式中的文法符号的属性语义规则所描述的工作可以包括属性计算、静态语义检查、符号表操作、代码生成等等。

E→E1+T

{E.val:

=E1.val+T.val}

T→T1*F

{T.val:

=T1.val*F.val}

F→id

{F.val:

=id.lexval}

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

当前位置:首页 > 经管营销

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

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