东南大学1998年考研真题-编译原理

本站小编 FreeKaoyan/2018-01-22

试题编号 :553

试题名称 :编译原理

一 :已知文法G1:

S→aB|ε

B→bC|bD

C→cB|c

D→d

1.试构造一个最小DFA,画出状态转换图.

2.由该DFA给出它所识别的语言(用正规式表示).

二 :已知正规式α=ab*c*d,

1.试构造一个DFAM,其接受的语言为此α(画出图);

2.由该DFAM写出对应的正规文法(古线性).

三 :文法G3:

S→A[B]

A→[B]|Aa

B→a

1.求出各非终结符N的Firstvt(N)和Lastvt(N),构造包括语句括号'#'在内的算符优先表;

2.给出语句#[a][a]#的算符优先分析过程,即填写如下格式的表:

 步骤 │ 栈内 │ 输入串 │ 动作

────┼────┼────┼─────

0  │# │[a][a]# │

...  │    │    │

四 :已知文法G4:

T→T*F|F

F→(T)|i

1.试给出语句(i*i)#的自上而下分析过程(填下表);

2.画出对应的语法树,指出每一步归纳的句柄.

 步骤 │ 栈内 │ 输入 │ 动作

────┼────┼────┼─────

0  │#T │ (i*i)# │

...  │    │    │

五 :已知文法G5:

0. E'→E

1. E→E+T

2. E→T

3. T→i

列出 LR(0)项目集规范族,求出各非终结符N的Follow集合,构造SLR分析表.

六 :翻译如下语句成四元式序列(由语法制导生成).

while a>b and a<d do

if a=5 then b:=b+1 else

repeat

a:=a+1

until a>=d;

七 :按语法制导翻译下段程序成四元式序列(不要优化),设数组A: array[1..10,1..10] of

int;每个下标变量占1字编址,数组按行存放,Z为函数名.

begin

A[i,j]:=A[i,j]+2;

B:=Z(A[i,j])*5

end

八 :将如下一段四元式序列进行块内优化和循环优化(强度减弱及删除基本归纳变量),写出优化后的四元式序列.(要求先划分基本块)

(1) i:=1

(2) if i>100 goto (10)

(3) T1:=20*i

(4) M:=J+T1

(5) T2:=20*i

(6) N:=K+T2

(7) O:=M+N

(8) i:=i+1

(9) goto (2)

(10) ...

九 :已知如下一段程序,试给出运行时整个数据区结构.假定num初值为2,每个数据区的活动记录包含内容如下图所示,数据区从k单元开始编址.

┌─────┐ program factoral;

│函数返回值│ var num,fact:int;

├─────┤ function f(n:int):int

│ 变量单元 │ if n>0 then f:=n*f(n-1)

├─────┤ else f:=1;

│ display 表│ begin

├─────┤ read(num);

│ 形参单元 │ fact:=f(num)

├─────┤ end

│ 返回地址 │

├─────┤

│  基 SP  │

└─────┘


相关话题/考研真题 东南大学 原理