编译原理复习题目集答案解析

(1)FIRSTVT-LASTVT表:

非终结符 E T F (2)算符优先关系表: + x ( ) i # + > > < > > < x < > < > > < ( < < < < ) > > = > > i < < < < # > > > > = FIRSTVT + × i ( x i ( i ( LASTVT + × ) i × ) i ) i 优先关系表中无多重定义,此文法是算符优先文法

(3)对输入串i+i#的算符优先分析过程为:

题目2:作业、习题6.1、复习: 文法G[S]:S->a|^|(T) T->T,S|S c、算符优先归约输入串(a,a)#

文法G[S]:S->a|^|(T),T->T,S|S

(1) 计算G[S]的FIRSTVT、LASTVT

(2) 改造算符优先关系表并说明G[S]是否算符优先文法

(3) 给出输入串(a,a)#的算符优先分析过程,判断其是否文法G的句子 。 答:文法展开为:S→a

S→? S→(T) T→T,S T→S

9

(1)FIRSTVT-LASTVT表:

非终结符 S T

(2)算符优先关系表:

a ^ ( ) , # a < < < ^ < < < ( < < < ) > > = > > , > > < > > # > > > = FIRSTVT a ^ ( , a ^ ( LASTVT a ^ ) , a ^ ) 表中无多重入口,所以是算符优先(OPG)文法。

(3)对输入串(a,a)#的算符优先分析过程为:

栈 # #( #(a #(N #(N, #(N,a #(N,N #(N #(N) #N 当前输入字符 ( a , , a ) ) ) # # 剩余输入串 a,a)# ,a)# a)# a)# )# # # # 动作 Move in Move in Reduce:S→a Move in Move in Reduce:S→a Reduce:T→T,S Move in Reduce:S→(T) 可见输入串(a,a)#是文法的句子。

题目3:自习、书本练习6.4,参考答案见《z6 书本练习6.4.doc》 已知文法G[S]:

S?S;G S?G G?G(T) G?H H?a H?(S) T?T+S T?S

c、算符优先归约输入串a;(a+a)#

(1)构造算符优先关系表

FIRSTVT(S)={;}∪FIRSTVT(G) = {; , a , ( } FIRSTVT(G)={ ( }∪FIRSTVT(H) = {a , ( } FIRSTCT(H)={a , ( }

FIRSTVT(T) = {+} ∪FIRSTVT(S) = {+ , ; , a , ( } LASTVT(S) = {;} ∪LASTVT(G) = { ; , a , )} LASTVT(G) = { )} ∪ LASTVT(H) = { a , )}

10

LASTVT(H) = {a, }}

LASTVT(T) = {+ } ∪LASTVT(S) = {+ , ; , a ,} } 即: FIRSTVT LASTVT S ; , a , ( ; , a , ) G a , ( a , ) H a , ( a , ) T + , ; , a , ( + , ; , a ,) 由S?S;G LASTVT(S) > ; ; < FIRSTVT(G) 由G?G(T…

LASTVT(G) > ( ( < FIRSTVT(T) 由G?…T)

LASTVT(T) > ) 由G?…(T)

( = ) 由T?T+S

LASTVT(T) > + + < FIRSTVT(S) 由H?(S)

( < FIRSTVT(S) LASTVT(S) > ) ( = ) 由S-> #S#

#< FIRSTVT(S) LASTVT(S) > # # = #

11

; ( ) a + # ; > < > > < < ( < < > > < < ) > = > > > a < < < < + > < > > > # > > > = 由优先关系表中所有符号对的关系唯一,可判定文法G[S]是算符优先文法。

(2) 分析a;(a+a) // S?S;G |G G?G(T) |H H?a |(S) T?T+S |S 1 2 3 4 5 6 7 8 9 10 11 12 13 14

分析栈 # #a #H #H; #H;( #H;(a #H;(H #H;(H+ #H;(H+a #H;(H+H #H;(T #H;(T) #H;H #S 优先关系 < > < < < > < < > > = > > = 当前字符 a ; ; ( a + + a ) ) ) # # # 剩余输入串 ;(a+a)# (a+a)# (a+a)# a+a)# +a)# a)# a)# )# # # # 动作 移进 归约H?a 移进 移进 移进 归约H?a 移进 移进 归约H?a 归约T?T+S 移进 归约H?(S) 归约S?S;G 接受 12

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4