电子科技大学2012年11届《编译原理》半期试卷-答案

发布时间:2013-11-12 15:00:30   来源:文档文库   
字号:

《编译原理》半期考试答案(2012.11.6)(开卷)

选课号: 学号: 姓名:

1 .采用高度抽象概念有利于程序设计。C语言中循环语句

for (i=1;i<=N;i++) S

对应的显示控制结构是什么?请使用伪代码形式(通过条件跳转指令)表达(15分)。

i=1;

Loop: if i<=N goto B.true 2分)

goto S.next 2分)

B.true:

/* S的代码*/

i++;

goto Loop; 4分)

S.next:

2.程序片段

float fnumb=6.5;

void main( )

{char * p=UESTC”;int arr[20] ;chat ch ; ... }

void fun( int n) { int m=100 ; ...}

请列出各个常量、变量在内存中对应的内存的存储区名称和存储顺序以及所占用的存储单元的个数设字符数占1个字节;整数占2个字节;float数占4个字节;double数占8个字节 ;指针占4个字节;内存按照4个字节进行编址。(20分)

解答:

常量存储区 6.5 2个单元

UESTC” 6个单元

20 1个单元

100 1个单元

全局数据区 fnumb 1个单元

活动记录 (函数数据存储区):

main函数:p 1个单元

arr 20个单元

ch 1个单元

fun函数:nm 1个单元

3简述典型编译系统的5个阶段的任务。(15)

词法分析: 输入字符串,根据词法规则识别出单词符号。

语法分析: 根据语法规则,将单词符号构成各类语法单位,并进行语法检查。

语义分析: 根据语义规则,进行初步编译。

优化:对中间代码进行等价变换,以使代码更有效。

目标代码生成:生成机器语言程序或汇编语言程序。

4写出生成语言L的上下文无关文法G(只写产生式):L(G)={an+1b2n+1|n>=0 (10)

S->aSbb|ab

5编译程序为什么需要包括出错处理程序?出错处理程序的功能是什么?10分)

编译过程各个阶段可能发现源程序的错误,需要出错处理,报告错误性质,位置,并将错误影响最小化

6已知文法G(A):(30分)

A aAB | b

B Bb | d

消除文法的左递归得文法G’;(2分)

G’中各非终结符的的FIRST集、FOLLOW集;(12分)

构造预测分析表;(12分)

该文法是不是LL(1)文法?为什么?(4分)

: 1.2分) G'A):

A aAB | b

Bd B'

B'b B'|

2. FIRST集和FOLLOW(每个集合2分)

3. 预测分析表(每个产生式2分)

4. 因为预测分析表无多重定义入口,所以文法GLL1)文法。4分)

本文来源:https://www.2haoxitong.net/k/doc/cbd9160faf45b307e87197e5.html

《电子科技大学2012年11届《编译原理》半期试卷-答案.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式