目录
证明E+T*F是它的一个句型,指出这个句型的所有短语,直接短语和句柄
3.(1)计算练习2文法G2的FIRSTVT 和 LASTVT。(2)计算G2的优先关系。G2是一个算符优先文法吗?(4)给出输入串(a,(a,a))的算符优先分析过程。
1.令文法G为:
E→E+T|T
T→T*F|F
F→(E)|i
证明E+T*F是它的一个句型,指出这个句型的所有短语,直接短语和句柄
画出该句型的语法树
短语:E+T*F,T*F直接短语:T*F
句柄:T*F
2.考虑下面的表格结构文法G2:
S->a|∧|(T)
T→T,S|S
(1)给出(a,(a,a))和(((a,a),∧,(a)),a)的最左和最右推导。
(2)指出(((a,a),∧,(a)),a)的规范归约及每一步的句柄。根据这个规范归约,给出“移进-归约”的过程,并给出它的语法树自下而上的构造过程。
(1) (a,(a,a)) 最左推导:S=>(T)=>(T,S)=>(S,S)=>(a,S)=>(a,(T))=>(a,(T,S))=>(a,(S,S))=>(a,(a,S))=>(a,(a,a)) 最右推导:S=>(T)=>(T,S)=>(T,(T))=>(T,(T,S))=>(T,(T,a))=>(T,(S,a))=>(T,(a,a))=>(S,(a,a))=>(a,(a,a)) (2)(((a,a),∧,(a)),a) 最左推导:S=>(T)=>(T,S)=>(S,S)=>((T),S)=>((T,S),S)=>((T,S,S),S) =>((S,S,S),S)=>(((T),S,S),S)=>(((T,S),S,S),S)=>(((S,S),S,S),S)=>(((a,S),S,S),S) =>(((a,a),S,S),S)=>(((a,a),∧,S),S)=>(((a,a),∧,(T)),S)=>(((a,a),∧,(S)),S) =>(((a,a),∧,(a)),S)=>(((a,a),∧,(a)),a) 最右推导:S=>(T)=>(T,S)=>(T,a)=>(S,a)=>((T),a)=>((T,S),a)=>((T,(T)),a)=>((T,(S)),a) =>((T,(a)),a)=>((T,S,(a)),a)=>((T,∧,(a)),a)=>((S,∧,(a)),a)=>(((T),∧,(a)),a) =>(((T,S),∧,(a)),a)=>(((T,a),∧,(a)),a)=>(((S,a),∧,(a)),a)=>(((a,a),∧,(a)),a)
(2) (((a,a),∧,(a)),a)的规范归约: 最右推导倒着来 具体可见符号栈+输入串的变化: 共17步归约:6,7,10,11,13,14,17,18,22,23,25,26,28,29,32,33,35 (((a,a),∧,(a)),a):“移进-归约”的过程 步骤 符号栈 输入串 操作 说明 1 # (((a,a),∧,(a)),a)# 预备 2 #( ((a,a),∧,(a)),a)# 移进 3 #(( (a,a),∧,(a)),a)# 移进 4 #((( a,a),∧,(a)),a)# 移进 5 #(((a ,a),∧,(a)),a)# 移进 6 #(((S ,a),∧,(a)),a)# 归约 S->a 7 #(((T ,a),∧,(a)),a)# 归约 T->S 8 #(((T, a),∧,(a)),a)# 移进 9 #(((T,a ),∧,(a)),a)# 移进 10 #(((T,S ),∧,(a)),a)# 归约 S->a 11 #(((T ),∧,(a)),a)# 归约 T->T,S 12 #(((T) ,∧,(a)),a)# 移进 13 #((S ,∧,(a)),a)# 归约 S->(T) 14 #((T ,∧,(a)),a)# 归约 T->S 15 #((T, ∧,(a)),a)# 移进 16 #((T,∧ ,(a)),a)# 移进 17 #((T,S ,(a)),a)# 归约 S->∧ 18 #((T ,(a)),a)# 归约 T->T,S 19 #((T, (a)),a)# 移进 20 #((T,( a)),a)# 移进 21 #((T,(a )),a)# 移进 22 #((T,(S )),a)# 移归 S->a 23 #((T,(T )),a)# 归约 T->S 24 #((T,(T) ),a)# 移进 25 #((T,S ),a)# 归约 S->(T) 26 #((T ),a)# 归约 T->T,S 27 #((T) ,a)# 移进 28 #(S ,a)# 归约 S->(T) 29 #(T ,a)# 归约 T->S 30 #(T, a)# 移进 31 #(T,a )# 移进 32 #(T,S )# 归约 S->a 33 #(T )# 归约 T->T,S 34 #(T) # 移进 35 #S # 归约 S->(T) 36 #S # 接受
3.(1)计算练习2文法G2的FIRSTVT 和 LASTVT。
(2)计算G2的优先关系。G2是一个算符优先文法吗?
(4)给出输入串(a,(a,a))的算符优先分析过程。
(1)文法G2的FIRSTVT 和 LASTVT。 FIRSTVT(S)={a ∧ (} LASTVT(S)={a ∧ )} FIRSTVT(T)={a ∧ ( ,} LASTVT(T)={a ∧ ) ,} 2)G2的优先关系矩阵: a ^ ( ) , # a > > > ^ > > > ( < < < = < ) > > > , < < < > > # < < < = G2是一个算符优先文法 (4)输入串(a,(a,a))的算符优先分析过程: 步骤 符号栈 输入串 操作 说明 (1) # (a,(a,a))# 预备 (2) #( a,(a,a))# 移进 [#][(]=< (3) #(a ,(a,a))# 移进 [(][a]=< (4) #(T ,(a,a))# 归约 [a][,]=> (5) #(T, (a,a))# 移进 [(][,]=< (6) #(T,( a,a))# 移进 [,][(]=< (7) #(T,( a,a))# 移进 [(][a]=< (8) #(T,(a ,a))# 移进 [(][a]=< (9) #(T,(T ,a))# 归约 [a][,]=> (10) #(T,(T, a))# 移进 [(][,]=< (11) #(T,(T,a ))# 移进 [,][a]=< (12) #(T,(T,S ))# 归约 [a][)]=> (13) #(T,(T) )# 移进 [(][)]== (14) #(T,S )# 归约 [)][)]=> (15) #(T )# 归约 [,][)]=> (16) #(T) # 移进 [(][)]== (17) #S # 归约 [)][#]=>
1(多选题) 语法分析按照分析的方向分为:
A. 自上而下的语法分析
B. 自下而上的语法分析
C. 自左而右的语法分析
D. 自右而左的语法分析
AB
2(简答题) 有文法G:
E—>T|E+T
T—>F|T*F
F—>(E)|i
请说明句型E+T*F+i的短语,直接短语和句柄。
画该句型的语法树
短语:E+T*F+i,E+T*F,T*F,i 直接短语:T*F,i 句柄:T*F
1(简答题) 请构造该文法中所有非终结符的LASTVT集
E->E+T|T
T->T*F|F
F->(E)|i
+ * ( ) i E 1 1 1 1 T 1 1 1 F 1 1
1(单选题) 若a、b均为终结符,且a的优先级低于b,则说明:
A. 推导的符号串中,a位于b之前,a先于b被规约
B. 推导的符号串中,a位于b之前,b先于a被规约
C. 推导的符号串中,a位于b之后,a先于b被规约
D. 推导的符号串中,a位于b之后,b先于a被规约,也有可能同时被规约
B
2(判断题) 在算符优先分析中,待分析串的界符#,其优先级一定低于文法所有终结符号。
对
错
错
3必答 (简答题) 已知文法G[S]:
S → a|^|(T)
T → T,S|S
非终结符的FIRSTVT、LASTVT集如下所示:
FIRSTVT(S)={a ^ (} LASTVT(S)={a ^ )}
FIRSTVT(T)={a ^ ( ,} LASTVT(T)={a ^ ) ,}
请构造文法G的优先关系矩阵。
a ^ ( ) , # a > > > ^ > > > ( < < < = < ) > > > , < < < > > # < < < =