完整版哈工大编译原理习题及答案.docx

上传人:b****2 文档编号:2458747 上传时间:2022-10-29 格式:DOCX 页数:134 大小:496.12KB
下载 相关 举报
完整版哈工大编译原理习题及答案.docx_第1页
第1页 / 共134页
完整版哈工大编译原理习题及答案.docx_第2页
第2页 / 共134页
完整版哈工大编译原理习题及答案.docx_第3页
第3页 / 共134页
完整版哈工大编译原理习题及答案.docx_第4页
第4页 / 共134页
完整版哈工大编译原理习题及答案.docx_第5页
第5页 / 共134页
点击查看更多>>
下载资源
资源描述

完整版哈工大编译原理习题及答案.docx

《完整版哈工大编译原理习题及答案.docx》由会员分享,可在线阅读,更多相关《完整版哈工大编译原理习题及答案.docx(134页珍藏版)》请在冰豆网上搜索。

完整版哈工大编译原理习题及答案.docx

完整版哈工大编译原理习题及答案

 1.1何谓源程序、目标程序、翻译程序、编译程序和解释程序?

它们之间可能有何种关系?

  1.2一个典型的编译系统通常由哪些部分组成?

各部分的主要功能是什么?

  1.3选择一种你所熟悉的程序设计语言,试列出此语言中的全部关键字,并通过上机使用该语言以判明这些关键字是否为保留字。

  1.4选取一种你所熟悉的语言,试对它进行分析,以找出此语言中的括号、关键字END以及逗号有多少种不同的用途。

  1.5试用你常用的一种高级语言编写一短小的程序,上机进行编译和运行,记录下操作步骤和输出信息,如果可能,请卸出中间代码和目标代码。

第一章习题解答

1.解:

源程序是指以某种程序设计语言所编写的程序。

目标程序是指编译程序(或解释程序)将源程序处理加工而得的另一种语言(目标语言)的程序。

翻译程序是将某种语言翻译成另一种语言的程序的统称。

编译程序与解释程序均为翻译程序,但二者工作方法不同。

解释程序的特点是并不先将高级语言程序全部翻译成机器代码,而是每读入一条高级语言程序语句,就用解释程序将其翻译成一段机器指令并执行之,然后再读入下一条语句继续进行解释、执行,如此反复。

即边解释边执行,翻译所得的指令序列并不保存。

编译程序的特点是先将高级语言程序翻译成机器语言程序,将其保存到指定的空间中,在用户需要时再执行之。

即先翻译、后执行。

2.解:

一般说来,编译程序主要由词法分析程序、语法分析程序、语义分析程序、中间代码生成程序、代码优化程序、目标代码生成程序、信息表管理程序、错误检查处理程序组成。

3.解:

C语言的关键字有:

auto break casecharconst  continuedefaultdodoubleelseenumexternfloatforgotoifintlongregisterreturnshortsignedsizeofstaticstructswitchtypedefunionunsignedvoidvolatilewhile。

上述关键字在C语言中均为保留字。

4.解:

C语言中括号有三种:

{},[],()。

其中,{}用于语句括号;[]用于数组;()用于函数(定义与调用)及表达式运算(改变运算顺序)。

C语言中无END关键字。

逗号在C语言中被视为分隔符和运算符,作为优先级最低的运算符,运算结果为逗号表达式最右侧子表达式的值(如:

(a,b,c,d)的值为d)。

5.略

第二章前后文无关文法和语言

 21设有字母表A1={a,b,…,z},A2={0,1,…,9},试回答下列问题:

(1)字母表A1上长度为2的符号串有多少个?

(2)集合A1A2含有多少个元素?

(3)列出集合A1(A1∪A2)*中的全部长度不大于3的符号串。

22试分别构造产生下列语言的文法。

(1){anbn|n≥0};

(2){anbmcp|n,m,p≥0};

(3){an#bn|n≥0}∪{cn#dn|n≥0};

(4){w#wr#|w∈{0,1}*,wr是将w中的符号按逆序排列所得的符号串};

(5)任何不是以0开始的所有奇整数所组成的集合;

(6)所有由偶数个0和偶数个1所组成的符号串的集合。

23试描述由下列文法所产生的语言的特点(文法的开始符号均为S)。

(1)S→10S0S→aAA→bAA→a

(2)S→SSS→1A0A→1A0A→ε

(3)S→1AS→B0A→1AA→C

B→B0B→CC→1C0C→ε

(4)S→bAdcA→AGSG→εA→a

(5)S→aSSS→a

24设已给文法G=(VN,VT,P,S),其中:

VN={S}

VT={a1,a2,…,an,∨,∧,~,[,]}

P={S→ai|i=1,2,…,n}∪{S→~S,S→[S∨S],S→[S∧S]},

试指出此文法所产生的语言。

25考察文法G=(VN,VT,P,S),其中:

VN={S,A,B,C,D,E,F,G}

VT={a},

P={S→ABC,C→BC,C→A,BA→GE,BG→GBF,AG→AD,

DB→BD,DE→AE,FB→BF,FE→Ea,AA→ε}

(1)指出此文法的类型;

(2)证明此文法所产生的语言为

L(G)={at(n)|n≥1}

t(n)=∑n[]i=1i

26设已给文法G[〈程序〉]:

〈程序〉→〈分程序〉|〈复合语句〉

〈分程序〉→〈无标号分程序〉|〈标号〉:

〈分程序〉

〈复合语句〉→〈无标号复合语句〉|〈标号〉:

〈复合语句〉

〈无标号分程序〉→〈分程序首部〉;〈复合尾部〉

〈无标号复合语句〉→begin〈复合尾部〉

〈分程序首部〉→begin〈说明〉|〈分程序首部〉;〈说明〉

〈复合尾部〉→〈语句〉end|〈语句〉;〈复合尾部〉

〈说明〉→d

〈语句〉→s

〈标号〉→L

(1)给出句子

L:

L:

begind;d;s;send

的最左推导和最右推导。

(2)画出上述句子的语法树。

27设已给文法G[S]:

S→aAcBS→BdSB→aScAB→cAB

A→BaBA→aBcA→aB→b

试检验下列符号串中哪些是G[S]中的句子,给出这些句子的最左推导、最右推导和相应的语法树。

(1)aacb

(2)aabacbadcd

(3)aacbccb

(4)aacabcbcccaacdca

(5)aacabcbcccaacbca

28设G=(VN,VT,P,S)为CFG,α1,α2,…,αn为V上的符号串,试证明:

α1α2…αn*β

则存在V上的符号串β1,β2,…,βn,使β=β1β2…βn,且有

ai*βi(i=1,2,…,n)

29设G=(VN,VT,P,S)为CFG,α和β都是V上的符号串,且α*β,试证明:

当α的首符号为终结符号时,β的首符号也必为终结符号;当β的首符号为非终结符号时,则α的首符号也必为非终结符号。

210试证明:

文法

S→ABS→DCA→aAA→a

B→bBcB→bcC→cCC→c

D→aDbD→ab

为二义性文法。

211对于下列的文法和相应的句子,试指出这些句子的全部短语;分别给出句子的最右推导,并指出各步直接推导所得句型的句柄。

(1)S→ABS→cA→bAA→aB→aSbB→c

bbaacb

(2)S→(AS)S→(b)A→(SaA)A→(a)

(((b)a(a))(b))

(3)E→ET+E→TT→TF*T→FF→FP↑F→PP→EP→i

iii*i+↑

212在自底向上的分析中,用来归约句型句柄的产生式称为句柄产生式。

试证明:

一个文法是无二义性的,当且仅当此文法的每一句型至多只有一个句柄和一个句柄产生式。

213化简下列各个文法。

(1)S→aABSS→bCACdA→bABA→cSA

A→cCCB→bABB→cSBC→cS

C→c

(2)S→aABS→EA→dDAA→e

B→bEB→fC→cABC→dSD

C→aD→eAE→fAE→g

(3)S→acS→bAA→cBCB→SA

C→bCC→d

214消去下列文法中的ε产生式。

(1)S→aASS→bA→cSA→ε

(2)S→aAAA→bAcA→dAeA→ε

215消去下列文法中的无用产生式和单产生式。

(1)S→aBS→BCA→aAA→c

A→aDbB→DBB→CD→B

C→b

(2)S→SAS→SBA→BB→[S]

A→(S)S→AB→[]A→()

(3)E→E+TE→TT→T*FT→F

F→P↑FF→PP→(E)P→i

第二章习题解答

 

1.

(1)答:

26*26=676

 

(2)答:

26*10=260

 (3)答:

{a,b,c,...,z,a0,a1,...,a9,aa,...,az,...,zz,a00,a01,...,zzz},共26+26*36+26*36*36=34658个

2.构造产生下列语言的文法

 

(1){anbn|n≥0}

  解:

对应文法为G(S)=({S},{a,b},{S→ε|aSb},S)

 

(2){anbmcp|n,m,p≥0}

  解:

对应文法为G(S)=({S,X,Y},{a,b,c},{S→aS|X,X→bX|Y,Y→cY|ε},S)

 (3){an#bn|n≥0}∪{cn#dn|n≥0}

  解:

对应文法为G(S)=({S,X,Y},{a,b,c,d,#},{S→X,S→Y,X→aXb|#,Y→cYd|#},S)

 (4){w#wr#|w?

{0,1}*,wr是w的逆序排列}

  解:

G(S)=({S,W,R},{0,1,#},{S→W#,W→0W0|1W1|#},S)

 (5)任何不是以0打头的所有奇整数所组成的集合

  解:

G(S)=({S,A,B,I,J},{-,0,1,2,3,4,5,6,7,8,9},{S→J|IBJ,B→0B|IB|e,I→J|2|4|6|8,Jà1|3|5|7|9},S)

 (6)所有偶数个0和偶数个1所组成的符号串集合

  解:

对应文法为S→0A|1B|e,A→0S|1CB→0C|1SC→1A|0B

3.描述语言特点

 

(1)S→10S0S→aAA→bAA→a

  解:

本文法构成的语言集为:

L(G)={(10)nabma0n|n,m≥0}。

 

(2)S→SSS→1A0A→1A0A→ε

  解:

L(G)={1n10n11n20n2…1nm0nm|n1,n2,…,nm≥0;且n1,n2,…nm不全为零}该语言特点是:

产生的句子中,0、1个数相同,并且若干相接的1后必然紧接数量相同连续的0。

 (3)S→1AS→B0A→1AA→CB→B0B→CC→1C0C→ε

  解:

本文法构成的语言集为:

L(G)={1p1n0n|p≥1,n≥0}∪{1n0n0q|q≥1,n≥0},特点是具有1p1n0n或1n0n0q形式,进一步,可知其具有形式1n0mn,m≥0,且n+m>0。

 (4)S→bAdcA→AGSG→εA→a

  解:

可知,S=>…=>baSndcn≥0

  该语言特点是:

产生的句子中,是以ba开头dc结尾的串,且ba、dc个数相同。

 (5)S→aSSS→a

  解:

L(G)={a(2n-1)|n≥1}可知:

奇数个a

4.解:

此文法产生的语言是:

以终结符a1、a2…an为运算对象,以∧、∨、~为运算符,以[、]为分隔符的布尔表达式串

5.  5.1解:

由于此文法包含以下规则:

AA→e,所以此文法是0型文法。

     5.2证明:

6.解:

(1)最左推导:

<程序>T<分程序>T<标号>:

<分程序>TL:

<分程序>

TL:

<标号>:

<分程序>

TL:

L:

<分程序>

TL:

L:

<无标号分程序>

TL:

L:

<分程序首部>;<复合尾部>

TL:

L:

<分程序首部>;<说明>;<复合尾部>

TL:

L:

begin<说明>;<说明>;<复合尾部>

TL:

L:

begind;<说明>;<复合尾部>

TL:

L:

begind;d;<复合尾部>

TL:

L:

begind;d;<语句>;<复合尾部>

TL:

L:

begind;d;s;<复合尾部.

TL:

L:

begind;d;s;<语句>end

TL:

L:

begind;d;s;send

最右推导:

<程序>T<分程序>T<标号>:

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 幼儿教育 > 少儿英语

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1