编译原理 第六章 语义分析和符号表 作业

一.单选题(共20题,70.0分)
1
下列哪项工作属于语义分析的范畴?

A、
单词拼写错误检查
B、
括号不匹配
C、
加法运算两个操作数的类型不兼容
D、
寄存器分配
正确答案: C 我的答案:C

得分: 3.5分
2
程序设计语言的语义分为静态语义和动态语义,其中编译时能检查的语义是_______.

A、
静态语义
B、
动态语义
正确答案: A 我的答案:A

得分: 3.5分
3
语义分析所依据的是_______.

A、
源语言的语法规则
B、
源语言的语义规则
C、
等价变换规则
D、
目标语言的语义规则
正确答案: B 我的答案:B

得分: 3.5分
4
下列错误属于静态语义错误的是_______

A、
括号不匹配
B、
出现非法字符
C、
类型不相容
D、
无效指针
正确答案: C 我的答案:C

得分: 3.5分
5
编译程序不能检查处理的错误是_______.

A、
静态语义错误
B、
动态语义错误
C、
语法错误
D、
词法错误
正确答案: B 我的答案:D

得分: 0.0分
6
编译过程中符号表的作用是记录_______中各个符号的必要信息,以辅助语义的正确性检查和代码生成.

A、
源程序
B、
目标程序
C、
汇编程序
D、
可执行程序
正确答案: A 我的答案:A

得分: 3.5分
7
符号表常用的操作不包括_______.

A、
查询给定的名字是否已在表中
B、
检查名字是否符合标识符命名的文法
C、
对给定名字,往表中填写或更新它的某些信息
D、
删除一个或一组无用的项
正确答案: B 我的答案:B

得分: 3.5分
8
属于标识符“种类”属性信息的描述是_______.

A、
整型
B、
函数
C、
地址
D、
指针
正确答案: B 我的答案:A

得分: 0.0分
9
编译一个源程序时,符号表可以是一张统一的表,也可以按名字的不同种类分为几张不同的表。以上说法_______.

A、
正确
B、
不正确
正确答案: A 我的答案:A

得分: 3.5分
答案解析:

10
在目标代码生成阶段,符号表用于_______.

A、
语义检查
B、
地址分配
C、
目标代码生成
D、
优化
正确答案: B 我的答案:B

得分: 3.5分
11
关于全局变量与局部变量的说法,正确的是_______.

A、
全局变量的作用域是从声明该变量的位置开始,一直到程序结束
B、
局部变量的作用域是声明该局部变量的函数或复合语句
C、
当发生作用域嵌套时,标识符的使用遵循“最近嵌套”原则
正确答案: C 我的答案:C

得分: 3.5分
12
函数标识符内部表示中有一项是函数的目标代码的入口地址,该项信息是在_______时填写的.

A、
语法分析
B、
语义分析
C、
中间代码生成
D、
目标代码生成
正确答案: D 我的答案:D

得分: 3.5分
13
约定整型占1个单元,实型占2个单元。根据下面的声明,每个类型为date的变量占______个单元。
union category {
int grade;
float score;
}
struct date {
int year, month, day;
union category property;
}

A、
2
B、
4
C、
5
D、
6
正确答案: C 我的答案:C

得分: 3.5分
14
约定整型占1个单元,实型占2个单元。根据下面的声明,变量score占______个单元。
float score[100];

A、
2
B、
100
C、
200
正确答案: C 我的答案:C

得分: 3.5分
15
约定整型占1个单元,实型占2个单元。根据下面的声明,变量score占______个单元。
float score[10][10];

A、
2
B、
100
C、
200
D、
2000
正确答案: C 我的答案:C

得分: 3.5分
答案解析:

16
约定整型占1个单元。根据下面的声明,变量papercolor占______个单元。
enum color {red, yellow, blue, green,white };
color papercolor;

A、
1
B、
2
C、
5
D、
0
正确答案: A 我的答案:A

得分: 3.5分
17
约定每个局部化单位的起始偏移为0,操作系统为每个整型、字符型变量分配1个字节的内存空间。在下面的程序中,第1行代码中变量i的层数和偏移量是_______.

  1. int i , j ;
  2. int main()
  3. { char i ;
  4.    i=’A’;
    
  5.   {  int  i ; 
    
  6. i = 0; }
  7.   i = ‘B’; 
    
  8. }

A、
0,0
B、
0,1
C、
1,0
D、
1,1
正确答案: A 我的答案:A

得分: 3.5分
答案解析:

18
约定每个局部化单位的起始偏移为0,整型、字符型占1个单元。在下面的程序中,第3行代码中变量i的层数和偏移量是_______.

  1. int i , j ;
  2. int main()
  3. { char i ;
  4.    i=’A’;
    
  5.   {  int  i ; 
    
  6. i = 0; }
  7.  i = ‘B’; 
    
  8. }

A、
0,0
B、
0,1
C、
1,0
D、
1,1
正确答案: C 我的答案:C

得分: 3.5分
答案解析:

19
约定每个局部化单位的起始偏移为0,整型、字符型占1个单元,实型占2个单元。在下面的程序中,第5行代码中变量i的层数和偏移量是_______.

  1. int i , j ;
  2. int main()
  3. { char i ;
  4.    i=’A’;
    
  5.    {  float  i ; 
    
  6. i = 0; }
  7.    i = ‘B’; 
    
  8. }

A、
1,0
B、
1,1
C、
2,0
D、
2,1
正确答案: B 我的答案:C

得分: 0.0分
答案解析:

20
约定每个局部化单位的起始偏移为0,整型、字符型占1个单元,实型占2个单元,不考虑优化。在下面程序中,第7行代码中变量i的层数和偏移量是_______.

  1. int i , j ;
  2. int main()
  3. { char i ;
  4.    i=’A’;
    
  5.    {  float  i ; 
    
  6. i = 0; }
  7. { int i;
  8. i = 10; }
  9.    i = ‘B’; 
    

10.}

A、
1,1
B、
1,3
C、
2,0
D、
2,1
正确答案: B 我的答案:C

得分: 0.0分
答案解析:

二.多选题(共8题,30.0分)
1
下面C语言程序中,可能存在的语义(包括动态语义)错误有_______.
int x = 0,z;
float y(){…};
int main(){
z = x() + t;
z /= x;
x = y();
}

A、
标识符使用时的种类和声明时的种类不一致
B、
标识符未声明
C、
除零溢出
D、
赋值语句左右部的类型不相容
正确答案: ABCD 我的答案:ABD

得分: 1.8分
答案解析:

2
构建符号表时,为提高符号表的查找效率,可将符号表组织成________.

A、
二叉树形式
B、
散列表
C、
顺序表
D、
多表结构
正确答案: ABD 我的答案:ABC

得分: 0.0分
3
符号表中的标识符,一般设置的属性有______.

A、
名字
B、
类型
C、
存储分配信息
D、
作用域及可见性
正确答案: ABCD 我的答案:AB

得分: 1.8分
4
函数标识符的属性表示中一般应包含_______.

A、
函数名
B、
函数参数信息
C、
函数体对应目标代码入口地址
D、
函数返回值类型
正确答案: ABCD 我的答案:ACD

得分: 1.8分
答案解析:

5
构造类型如数组,结构体等的内部表示中一般应包含_______.

A、
构造类型的名字
B、
构造类型的种类
C、
构造类型所占内存空间的大小
D、
构造类型相关的详细信息,如数组的上下界,成分类型,结构体的各个域的信息等
正确答案: BCD 我的答案:ABCD

得分: 0.0分
答案解析:

6
关于标识符的作用域,以下说法正确的是______.

A、
用户定义的每一个标识符都有作用域
B、
标识符的作用域是编译时确定的
C、
标识符的作用域是目标代码运行时确定的
D、
标识符在其作用域内使用它是合法的;反之在作用域外使用它是非法的。
正确答案: ABD 我的答案:ABD

得分: 3.5分
7
关于C语言标识符作用域的说法,正确的是______.

A、
在C语言中,每个源程序编译单位、每个函数定义、复合语句都各自构成一个作用域区域
B、
标识符必须先声明再使用,同一作用域内标识符不得重复声明
C、
在嵌套结构中,内层标识符可以与外层标识符同名
D、
在嵌套结构中,外层标识符的作用域要去掉内层同名标识符的作用域区域
正确答案: ABCD 我的答案:ABCD

得分: 3.5分
答案解析:

8
全局符号表可以采用______解决符号表的局部化问题.

A、
删除法
B、
驻留法
C、
散列法
D、
局部符号表
正确答案: ABC 我的答案:ABC

你可能感兴趣的:(编译原理)