编译原理习题复习Word文档格式.docx
《编译原理习题复习Word文档格式.docx》由会员分享,可在线阅读,更多相关《编译原理习题复习Word文档格式.docx(14页珍藏版)》请在冰豆网上搜索。
(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}