编译原理计科05.docxVIP

  • 4
  • 0
  • 约2.67千字
  • 约 5页
  • 2018-04-18 发布于河南
  • 举报
编译原理计科05

编译原理期中试卷(计科05)(5’)设G=(VT,VN,S,P)是一个上下文无关文法,产生集合P中的任一个产生式应具有什么样的形式?若G是1型文法呢?上下文无关文法,产生式形式为:P, PVN, (VT VN)* 。1型文法:产生式形式为: 其中:|| ||,仅 S例外。(5’)何谓二义性文法?试举一例说明。答:如果一个文法的句子存在两颗分析树,称该句子是二义性的;如果一个文法包含二义性的句子则称该文法是二义性的,否则该文法无二义性。例子:有如下文法:S→if expr then S |otherS→if expr then S else S句子if e1 then if e2 then s1 else s2是二义性的。注:原因请参见提纲。(20’)给定正则表达式b*(d|ad)(b|ab)+构造DFA画出NFA:将NFA确定化为DFAIaIbId{X,4,1}{6}{4,1}{2}{6}ФФ{2}{4,1}{6}{4,1}{2}{2}{7}{3,5,Y}Ф{7}Ф{3,5,Y}Ф{3,5,Y}{8}{5,Y}Ф{8}Ф{5,Y}Ф{5,Y}{8}{5,Y}Ф根据上面状态转换举证赋予状态新的符号:IaIbIcSABCAФФCBABCCDEФDФEФEFGФFФGФGFGФE,G为终态。画出DFA:DFA最小化:首先分为非终态集{S,A,B,C,D,F}和终态集{E,G}对于集合{S,A,B,C,D,F},因为S,B,C有a条件输入这个状态转化,而A,D,F没有a条件输入这个状态转化,首先因分为{S,B,C}和{A,D,F}两个集合{S,B}b={B} {C}b={E} 不属于已划分出的同一个集合的子集,所以{S,B,C}分为{S,B}和{C} ,而{S,B}d={C}是已划分出的同一个集合的子集,所以不需再分{A,D,F}中A条件b作为输入,而{D,F}b={E,G}是同一集合的子集,并且{D,F}都没有d条件作为输入,所以{D,F}不需再分。3)对于{E,G},{E,G}a={F} {E,G}b={G} E和G都无条件d输入,所以{E,G}不需划分综上所述:所有状态分为{S,B} {C} {A} {D,F} {E,G}注:落在统一集合的元素等价,画图时只需选一个为代表,并把与它等价的元素的状态转化加到它身上即可。(10’)按指定的类型给出下列语言的文法L1={anbmc|n=0,m0}用正规文法S→aS|A A→bA|bB B→cL2={a0n1nbdm|n0,m0}用二型文法S→AB A→aT T→0T1|01 B→bD D→dD|d5、(20’)判断下面文法是不是LL(1)文法,若是请构造相应的LL(1)分析表,写出aaabd的分析过程。S→aH H→aMd|d M→Ab| A→aM|e答: 1)首先将规则分解:S→aH H→aMd H→d M→Ab M→ A→aMA→e可以判断该文法无左递归;求First和Follow集合非终结符XFirst(X)Follow(X)Sa#Ha,d#M, a,ed,bAa,eb求Select集合Select(S→aH)=First(aH)={a} Select(H→aMd)=First(aMd)={a} Select(H→d)={d} Select(M→Ab)=First(Ab)={a,e} Select(M→)=First()UFollow(M)= Follow(M)={d,b} Select(A→aM)=First{aM}={a} Select(A→e)=First(e)={e}∵Select(H→aMd) ∩ Select(H→d)= ФSelect(M→Ab) ∩Select(M→e)=ФSelect(A→aM) ∩Select(A→e)= Ф∴该文法是LL(1)文法。3LL(1)分析表如下:令输入符号串已#结尾,即aaabd#adbeSS→aHHH→aMdH→dMM→AbM→M→M→AbAA→aMA→eaaabd的分析过程如下:步骤符号栈输入串所用产生式0#Saaabd#1#Haaaabd#S→aH2#H aabd#3#dMa aabd#H→aMd4#dM abd#5#dbA abd#M→Ab6#dbMa abd#A→aM7#dbM bd#8#db bd#M→9#d d#10# #6、(15’)写出文法G[A]: A→Ba|Cb|c B→dA|Ae|f C→Bg|h消除左递归后的文法。答:(1)经分析发现文法G[A]并无直接左递归;(2)消除间接左递归:将A,B,C按照B,C,A排序(建议将A放在最后)由于出现C→Bg形式,将B代入C得:C→

文档评论(0)

1亿VIP精品文档

相关文档