编译原理复习题答案

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

编译原理复习题答案

二、概念题

1、设有文法:P→P+Q|Q

Q→Q*R|R

R→(P)|i

(1)证明Q*R+Q+Q是它的一个句型。(3分)

(2)给出Q*R+Q+Q的所有短语,直接短语和句柄。(4分) (3)给出句子i+i*i的最右推导。(4分)

(4)给出句子i+i*i的最左推导。(4分)

2、设有文法:E→E+T|T T→T*F|F F→(E)|i (1)证明E+T*F是它的一个句型。(3分)

⇒+⇒+*

答案:E E T E T F

(2)给出E+T*F的所有短语,直接短语和句柄。(4分) 短语: E+T*F, T*F,

直接短语: T*F

句柄: T*F

(3)给出句子i+i*i的最右推导。(4分)

3、写出表达式a+b*(c-d)对应的逆波兰式和三元式序列。答案:逆波兰式:(abcd-*+)

1、构造下面正规式相应的DFA

((0|1)*|(11)*)*

(要求:先将正规式转化为NFA,再将NFA确定化,最小化)2、构造下面正规式相应的DFA

1(0|1)*101

答案:

I I0 I1

{X} Ф{A,B,C}

{A,B,C} { B,C} { B,C,D}

{B,C} { B,C} { B,C,D}

{B,C,D} { B,C,E} { B,C,D}

{B,C,E} { B,C} {B,C,D,y}

{B,C,D,y} {B,C,E} { B,C,D}

3、构造一个DFA,它接受 ={a,b}上所有包含ab的字符串。(要求:先将正规式转化为NFA,再将NFA确定化,最小化)答案:(一)相应的正规式为(a|b)*ab(a|b)*

(二) ①与此正规式对应的NFA为

②状态转换矩阵为:

③最小化:

{0,1,2} {3,4,5}

{0, 2},1, {3,4,5}

0 ,终态集为{3} ,状态集为{0,1,3} ,输入字母表是{a,b} 状态转换图如上。

4、构造与正规式 b(a|b)*ba 等价的DFA

五、语法分析题

1、对下面的文法G:

Expr→- Expr

Expr→(Expr)|Var ExprTail

ExprTail→- Expr|ε

Var→id VarTail

VarTail→(Expr) |ε

(1)构造LL(1)分析表。(12分)

答案:

(1)FIRST(Expr)={_ , ( , id } FIRST(ExprTail)={_ , ε } FIRST(Var)={id} FIRST(VarTail)={ ( , ε}

FOLLOW(Expr)={# , ) } FOLLOW(ExprTail) ={# , ) }

FOLLOW(Var) ={_ , # , ) } FOLLOW(VarTail) ={_ , # , ) }

(2)给出对句子id—id((id))的分析过程。(8分)

步骤符号栈输入串所用产生式

0 #Expr id_ _id((id))#

1 # ExprTail Var id_ _id((id))#Expr→Var ExprTail

2 # ExprTail VarTail id id_ _id((id))#Var→id VarTail

3 # ExprTail VarTail _ _id((id))#

4 # ExprTail _ _id((id))#VarTail→ε

5 # Expr_ _ _id((id))# ExprTail→_ Expr

6 # Expr _id((id))#

7 # Expr_ _id((id))#Expr→_Expr

8 # Expr id((id))#

9 # ExprTail Var id((id))#Expr→Var ExprTail

10 # ExprTail VarTail id id((id))#Var→id VarTail

11 # ExprTail VarTail ((id))#

12 # ExprTail )Expr( ((id))#VarTail→(Expr)

13 # ExprTail )Expr (id))#

14 # ExprTail ) )Expr( (id))#Expr→(Expr)

15 # ExprTail ) )Expr id))#

16# ExprTail ) ) ExprTail Var id))#Exp→Var ExprTail

17 # ExprTail ) )

ExprTail VarTail id id))#Var→id VarTail 18 # ExprTail ) )

ExprTail VarTail ))#

19 # ExprTail ) )

ExprTail ))#VarTail→ε

20 # ExprTail ) ) ))#ExprTail→ε

21 # ExprTail ) )#

22 # ExprTail # ExprTail→ε

23 # # 分析成功

2、对下面的文法G:

E→TE’

E’→+E|ε

T→FT’

T’→T|ε

F→PF’

F’→*F’|ε

P→(E)|a|b|∧

(1)计算这个文法的每个非终结符的FIRST和FOLLOW。(8分)答案:FIRST(E)={(,a,b,^}

FIRST(E')={+,ε}

FIRST(T)={(,a,b,^}

FIRST(T')={(,a,b,^,ε}

FIRST(F)={(,a,b,^}

FIRST(F')={*,ε}

FIRST(P)={(,a,b,^}

FOLLOW(E)={#,)}

FOLLOW(E')={#,)}

FOLLOW(T)={+,),#}

FOLLOW(T')={+,),#}

FOLLOW(F)={(,a,b,^,+,),#}

FOLLOW(F')={(,a,b,^,+,),#}

FOLLOW(P)={*,(,a,b,^,+,),#}

相关文档
最新文档