湖南大学2017编译原理期末试卷

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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)的。

相关文档
最新文档