一、单选题
1、以编译方式和解释方式对高级语言源程序进行翻译时,( )。
A.编译方式不生成源程序的目标代码,解释方式生成源程序的目标代码
B.编译方式生成源程序的目标代码,解释方式不生成源程序的目标代码
C.编译方式和解释方式都生成源程序的目标代码
D.编译方式和解释方式都不生成源程序的目标代码
2、在自下而上语法分析中,LR(1)中的 L 表示( )。
A.从左到右扫描输入序列
B.最左推导
C.最左归约
D.最右推导
3、一个句型中的最左( )称为该句型的句柄。
A.短语
B.直接短语
C.非终结符号
D.终结符号
4、给定文法 A→bA|ab,( )是该文法的句子。
A.babb
B.abab
C.baab
D.bbab
5、用来描述控制进入和离开活动的树结构被称为( )。
A.语法树
B.分析树
C.活动树
D.嵌套关系树
二、填空
1、在以阶段划分的编译器中,识别单词的阶段称为________ ,识别句子结 构并将其表示成树形式的阶段称为______ ,贯穿整个编译过程的两个辅助过程 (阶段)为 ______ 和 ______ 。编译器前端生成的既接近目标语 言,又与具体机器无关的表示称为______ 。
2、将机器语言翻译成汇编语言的过程称为 ______。
3、 上 下 文 无 关 文 法 G 的 四 元 组 ( N,T,P,S 中 , T 表 示______ , P 表 示______.
4、设有二维数组 M[20,10] 以行为主存放,数组元素下标从 1 开始,每个元素占 1 个存 储单元,元素 M[8,5]相对于该数组空间首地址的偏移量为______ 。
5、在值调用参数传递方式中,参数传递是指______ 。
三、简答题
简述由正规式构造词法分析器的一般方法和过程
1、简述由正规式构造词法分析器的一般方法和过程
2、对于文法 G:
E → E + T | T
T → T * F | F
F → (E)| num
请给出句型 T*(E+5)的分析树,并指出该句型中的所有短语、直接短语和句柄。
3、请给出下述表达式的后缀式与语法树。
x := 2*(4+5)/3 - 6
4、请给出函数 foo 调用时分别采用传值调用和引用调用方式时代码的输出结果。
program main(input,output)
procedure foo(a,b)
begin
a := a + 2;
b := a * 5 - b;
end;
begin
x := 4; y := 7;
foo(x, y);
print(x,y);
end
四、计算题
1、某 NFA 的状态转换图如下表所示 (0 是初态,4 是终态)
(1)用“子集法”把该 NFA 确定化为 DFA D;
(2)将 DFA D 最小化。
2、设有上下文无关无法G及其语法制导翻译如下(注:G中终结符id仅由单个英文字母 组成,如a, b等):
E→E1*T {E.place=newtemp; emit(*, E1.place, T.place, E.place;}
| T {E.place=T.place;}
T→T1-F {T.place=newtemp; emit(-, T1.place, F.place, T.place;}
| F {T.place=F.place;}
F→id {F.place=id.name;}
(1)当 a=5、b=2、c=4 时,写出表达式 a-b*c 的结果;(*表示算术乘、-表示算术减)
(2)给出文法 G 识别活前缀的 DFA,简要说明该 DFA 的项目集中是否有冲突及冲突的 类型。