好文档 - 专业文书写作范文服务资料分享网站

复习题(软件)

天下 分享 时间: 加入收藏 我要投稿 点赞

一.令文法为

E?T|E?T|E?TT?F|T*F|T/F F?(E)|i(1) 给出i+i*i、i*(i+i)的最左推导和最右推导; (2) 给出i+i+i、i+i*i、i-i-i的语法树。 最左推导:

E?E?T?T?T?F?T?i?T?i?T*F?i?F*F?i?i*F?i?i*iE?T?T*F?F*F?i*F?i*(E)?i*(E?T)?i*(T?T)?i*(F?T)?i*(i?T)?i*(i?F)?i*(i?i)最右推导:

E?E?T?E?T*F?E?T*i?E?F*i?E?i*i?T?i*i?F?i*i?i?i*iE?T?F*T?F*F?F*(E)?F*(E?T)?F*(E?F)?F*(E?i)?F*(T?i)?F*(F?i)?F*(i?i)?i*(i?i)语法树:

EETEE

E+E+TE-TE+TFTT*F-TFTFiFFiTFiFiiiFiiii+i+ii-i-ii+i*ii+i+i i+i*i i-i-i

考虑文法G(E):

E→E+T | T T→T*F | F F→(E) | i

(1)给出句型E+F*F的语法树;

(2)给出以上句型的的短语、直接短语、句柄。 E =>E+T=>E+T*F=>E+F*F

E E + T T * F 由上图知:

F 短语:F,F*F,E+F*F 直接短语:F 句柄:F

二.构造下列正规式相应的NFA。 1求1(0|1)*00的状态最少的DFA。 解: 1)得到NFA

1 0 0 1 1 2 0 Y X

2) NFA转换成DFA 状态转换矩阵为: I {X} {1} {1,2} {1,2,Y} 重新命名后为:

I0 --- {1,2} {1,2,Y} {1,2,Y} I1 {1} {1} {1} {1}

表格 1

S 0 1 2 3 3)DFA的化简

0 -- 2 3 3 1 1 1 1 1 例如:将下图最小化。

b b a 2 3 0

a b a a b b a 4 5 1 a a 最小化:

b b a 1 2 0

a b

五.令文法G1为:

E->E+T|T T->T*F|F F->(E)|i

证明E+T*F是它的一个句型,指出这个句型的所有短语、直接短语和句柄。 解:E?E?T?E?T*F 短语: E+T*F, T*F, 直接短语: T*F 句柄: T*F

E->E+T|T T->T*F|F F->(E)|i

句型(E+T)*i+F指出这个句型的所有短语、直接短语和句柄、素短语、最左素短语 短语:E+T (E+T) i (E+T)*i (E+T)*i+F F 直接短语:E+T i F 素短语: i E+T 最左素短语: E+T 1、 名词解释:

句柄:一个句型的最左直接短语称为这个句型的句柄。

最左素短语:包括至少一个终结符号,且除自身之外不包含其它素短语的短语称作素短

语。 某句型最左边的那个素短语,称为最左素短语。

六.给出下面表达式的逆波兰表示(后缀式)

七.将表达式-(a+b)*(c+d)-(a+b+c)分别表示成三元式、间接三元式和四元式序列。 三元式序列: (1) +, a, b (2) @, (1), - (3) +, c, d (4) *, (2), (3) (5) +, a, b (6) +, (5), c (7) -, (4), (6) 间接三元式序列: 三元式表: (1) +, a, b (2) @, (1), - (3) +, c, d (4) *, (2), (3) (5) +, (1), c (6) -, (4), (5) 间接码表: (1) (2) (3) (4) (1) (5) (6)

四元式序列:

(1) +, a, b, T1 (2) @, T1, -, T2 (3) +, c, d, T3 (4) *, T2, T3, T4 (5) +, a, b, T5 (6) +, T5, c, T6 (7) -, T4, T6, T7 八.按照表7.3产生三地址代码的属性文法,自下而上把赋值句A:=B*(-C+D)翻译成四元式。 步骤 输入串 栈 PLACE 四元式 (1) A:=B*(-C+D)

(2) :=B*(-C+D) i A (3) B*(-C+D) i:= A- (4) *(-C+D) i:=i A-B

(5) *(-C+D) i:=E A-B (6) *(-C+D) i:=E A-B (7) (-C+D) i:=E* A-B-

(8) (9) (10) (11) (12) (13) (14) (15) (16) (17) (18) (19)

-C+D) i:=E*( C+D) i:=E*(- +D) i:=E*(-i +D) +D) D) )

i:=E*(-E i:=E*(E i:=E*(E+

A-B-- A-B--- A-B---C A-B---C A-B--T A-B--T-

1111(@,C,-, T)

1 i:=E*(E+i A-B--T-D

i:=E*(E+E A-B--T-D (+,T,D,T) i:=E(E i:=E*(E) i:=E+E i:=E

A-B--T A-B--T- A-B-T A-T

32) )

1222(*,B,T,T) (:=,T,-,A)

3

23(20) A 产生的四元式: (@,C,-, T) (+,T,D,T)

12(*,B,T,T)

1(:=,T,-,A)

3备注:本类题目不需要写出详细过程,只要会用抽象语法树写出四元式即可。 九.试把以下程序划分为基本块并作出其程序流图。 1、划分基本块的算法:

(1)先求出四元式程序中各个基本块的入口: ①程序的第一条语句;

⑵能由条件转移语句或无条件转移语句转移到的语句; ③紧跟在条件转移语句后面的语句。

(2)对以上求出的每一入口语句,构造其所属的基本块。它是由该入口语句到另一入口语句,或到一转移语句,或到一停语句之间的语句序列组成的。

(3)凡未被纳入某一基本块中的语句,都是程序中控制流程无法到达的语句,从而也是不会被执行到的语句,可把它们从程序中删除。 Read C A:=0 B:=1 L1: A:=A+B

If B≥C goto L2 B:=B+1 Goto L1 L2: write A

halt

23

复习题(软件)

一.令文法为E?T|E?T|E?TT?F|T*F|T/FF?(E)|i(1)给出i+i*i、i*(i+i)的最左推导和最右推导;(2)给出i+i+i、i+i*i、i-i-i的语法树。最左推导:E?E?T?T?T?F?T?i?T?i?T*F?i?F*F?i?i*F?i?i*iE?T?T*F?F*F?i*F?i*(E)?i
推荐度:
点击下载文档文档为doc格式
00v6n01nb33ef8l940oa3cwgi893aj006g8
领取福利

微信扫码领取福利

微信扫码分享