湖南大学2017编译原理期末试卷
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
诚信应考,考试作弊将带来严重后果!
湖南大学课程考试试卷
课程名称:编译原理;课程编码:试卷编号:A ;考试时间:120分钟题号一
二三四五六七八九十总分应得分
4060100实得分
评卷人
8分,共40分)
1.对下图中的块结构的C 代码,指出赋给w 、x 、y 和z 的值。
试描述正则表达式a(a|b )*a 定义的语言,并画出对应的NFA。SDD:
产生式语义规则D →id L
L →,id L
(1)L →:T T →integer enter(,L.type)enter(,L (1)
.type)L.type:=L (1).type L.type:=T.type T.type:=integer
考试中心填写:
____年___月___日考试用int w,x,y,z;A1int i=2;int j=3;
{int j=7;
A2i=6;
w=i+j;
}
x=i+j;
A3{int i=8;
A4y=i+j;
}
z=i+j;A5
T→real T.type:=real
过程enter(name,type)用来把名字name填入到符号表中,并给出此名字的类型type。
画出语句x,y,z:real的注释语法分析树;
4.以下文法生成了含“小数点”的二进制数
S->L.L|L
L->LB|B
B->0|1
设计一个SDD来计算S.val,即输入串的十进制数值。比如,串101.11应该被翻译为十进制数1*22+0*21+1*20+1*2-1+1*2-2=5.75。
5.试画出a=b*-c+b*-c的抽象语法树并将其翻译为四元式。
二、综合题(60分)
1.已知文法如下:
E→E or T|T
T→T and F|F
F→not F|(E)|true|false
(1)计算该文法所有非终结符的FIRST集合和FOLLOW集合。
(2)试画出该文法的LL(1)分析表。(20分)
2.已知程序清单C代码如下:
#include
int x,y;
int gcd(int u,int v)
{if(v==0)return u;
else return gcd(v,u%v);
}
main()
{scanf(“%d%d”,&x,&y);
printf(“%d\n”,gcd(x,y));
return0;
}
(1)试画出输入为12,8时的运行活动树。
(2)试画出在执行printf语句的返回前的运行时环境示意图。(20分)
3.(20分)说明下面的文法
S→SA|A
A→b
不是LL(1)的,但是SLR(1)的。