中科院编译原理与操作系统2003考研试题研究生入学考试试题考研真题
● 摘要
中科院2003年硕士研究生入学考试试题
考试科目:编译原理与操作系统
第一部分 编译(40’)
一、(1/01)*0*说明是什么语言 画出DFA (10’)
二、S →过程调用语句/数组的赋值语句(10’)
过程调用语句为:id(id,id,…,id)
赋值语句: id(id,…,id):=id(id,…,id)
(a)写一个LR (1)方法(产生式不大于6个)
(b)若在LR 分析同时完成语义分析,中间代码生成,基于你的文法有什么困难?
三、E →E*E/+E/-E/unsigned-integer (10’)
为上面表达式产生栈机器代码,代码执行后,表达式值留在栈上,自己设计所需栈机器指令,并写清指令含义。
四、C 语言中,a 表示数组首址,而&a也表示数组首址,然而使用时有时并不相同,请根据下面写出a 与&a类型表达式 (10’)
(1)文件1:
tgpedef int A[10][20]
A a;
A * func ( )
{
return(a);
}
在linux 上用gcc 编译
报告:第6行warning: return from
incompatible pointer type
(2)typedef int A[10][20]
A a;
A *func( )
{
return(&a);
}
无类型方面错误
(3)typedef int A[10][20]
typedef int B[20]
共3页 第1页