60 likes | 264 Views
1 对于文法 G(E): E T|E+T T F|T*F F (E)|i 1. 写出句型 T*F+i1*i2 的最右推导。 2. 写出上述句型的短语,直接短语、句柄。 3 . 写出上述句型的素短语和最左素短语。 短语 : T*F +i1*i2, T*F, i1*i2 , i1, i2 直接短语: T*F, i1, i2 句柄: T*F 素短语: T*F, i1, i2 最左素短语: T*F. 对于文法 G(E): E T|E+T T F|T*F F (E)|i
E N D
1 对于文法G(E): ET|E+T TF|T*F F(E)|i 1. 写出句型T*F+i1*i2的最右推导。 2. 写出上述句型的短语,直接短语、句柄。 3.写出上述句型的素短语和最左素短语。 短语:T*F +i1*i2, T*F, i1*i2 , i1, i2 直接短语:T*F, i1, i2 句柄:T*F 素短语:T*F, i1, i2 最左素短语:T*F 对于文法G(E): ET|E+T TF|T*F F(E)|i 1. 写出句型(T*F+i)的最右推导。 2. 写出上述句型的短语,直接短语、句柄。 3.写出上述句型的素短语和最左素短语。 短语:(T*F+i), T*F+i, T*F, i 直接短语:T*F, i 句柄:T*F 素短语:T*F,i 最左素短语:T*F
2 设文法G(S), 构造各非终结符的FIRSTVT和LASTVT集合 答: FIRSTVT(S)={ i,+,),( } FIRSTVT(A)={ +,),( } FIRSTVT(B)={ ),( } LASTVT(S)={ i,+,*,( } LASTVT(A)={ +,*,( } LASTVT(B)={ *,( }
3:已知文法G[A]: A->(A)|a,给出G的所有LR(0)项目 , 构造该文法的LR(0)项目集规范族 ,构造该文法的LR(0)分析表 。 答:(1) 首先构造文法的拓广文法为: (0)S->A (1) A->(A) (2) A->a 此文法的所有LR(0)项目为: [1] S->.A [2] S->A. [3] A->.(A) [4] A->(.A) [5] A->(A.) [6] A->(A). [7] A->a. [8] A->a. (2)I0=closure({S->.A})={S->.A,A->.(A),A->.a} GO(I0,A )={S->A.}=I1 GO(I0,( )={A->(.A), A->.(A),A->.a}=I2 GO(I0,a )={A->a.}=I3 GO(I2,A )={A->(A.)}=I4 GO(I2,( )={ A->(.A), A->.(A),A->.a}=I2 GO(I2,a )={A->a.}=I3 GO(I4,) )={A->(A).}=I5 则该文法的LR(0)项目集规范族 C={I0,I1,I2 ,I3,I4,I5}。 (3)该文法的LR(0)分析表为:
: 已知文法G[S]: S->BB,B->aB|b给出G的所有 • LR(0)项目 , 构造该文法的LR(0)项目集规范族 , • 构造该文法的LR(0)分析表 。 • 答:(1)列出所有的LR(0)项目如下: • 1)S->·BB 2)S->B·B 3)S->BB· • 4)B->·aB 5)B->a·B 6)B->aB· • 7)B->·b 8)B->b· • (2)I0=closure({S->·BB })={S->·BB,B->·aB, B->·b} • GO(I0,B)={S->B·B,B->·aB, B->·b}=I1 • G0(I0,a)={B->a·B,B->·aB,B->·b}=I2 • G0(I0,b)={B->b·}=I3 • G0(I1,B)={ S->BB· }=I4 • G0(I1,a)={ B->a·B, B->·aB, B->·b}=I2 • G0(I1,b)={B->b·}=I3 • G0(I2,B)={B->aB·}=I5 • G0(I2,a)={B->a·B,B->·aB,B->·b}=I2 • G0(I2,b)={B->b·}=I3 • 则该文法的LR(0)项目集规范族 • C={I0,I1,I2 ,I3,I4,I5}。 • (3)该文法的LR(0)分析表为:
5 求文法G[S] S->aBc | bAB A-> aAb | b B-> b | ε 构造其LL(1)分析表,并分析符号串baabbb是否该文法的句子 因为Follow(B)=FIRST(c) ∪FOLLOW(S)={C,#}, 所以构造文法G[S]的LL(1)分析表如下表: 分析符号串baabbb是否该文法的句子的过程 分析成功,符号串baabbb是该文法的句子
6 给出文法E->E+T T->T*F|F F->(E)|i 找出算符优先级 注意本题还要熟练掌握 FIRSTVT(E)={ } FIRSTVT(T )={ } FIRSTVT( F)={ } LASTVT(E)={ } LASTVT(T)={ } LASTVT(F)={ }