王汝传编译原理习题答案

合集下载

《编译原理》课后习题答案

《编译原理》课后习题答案

第7 题证明下述文法G[〈表达式〉]是二义的。

〈表达式〉∷=a|(〈表达式〉)|〈表达式〉〈运算符〉〈表达式〉

〈运算符〉∷=+|-|*|/

答案:可为句子a+a*a 构造两个不同的最右推导:

最右推导1 〈表达式〉=>〈表达式〉〈运算符〉〈表达式〉

=>〈表达式〉〈运算符〉a

=>〈表达式〉* a

=>〈表达式〉〈运算符〉〈表达式〉* a

=>〈表达式〉〈运算符〉a * a

=>〈表达式〉+ a * a

=>a + a * a

最右推导2 〈表达式〉=>〈表达式〉〈运算符〉〈表达式〉

=>〈表达式〉〈运算符〉〈表达式〉〈运算符〉〈表达式〉

=>〈表达式〉〈运算符〉〈表达式〉〈运算符〉a

=>〈表达式〉〈运算符〉〈表达式〉* a

=>〈表达式〉〈运算符〉a * a

=>〈表达式〉+ a * a

=>a + a * a

第8 题文法G[S]为:S→Ac|aB A→ab B→bc

该文法是否为二义的?为什么?

答案:对于串abc(1)S=>Ac=>abc (2)S=>aB=>abc

即存在两不同的最右推导。所以,该文法是二义的。

或者:对输入字符串abc,能构造两棵不同的语法树,所以它是二义的。

第9 题

考虑下面上下文无关文法:S→SS*|SS+|a

(1)表明通过此文法如何生成串aa+a*,并为该串构造语法树。(2)G[S]的语言是什么?答案:(1)此文法生成串aa+a*的最右推导如下

S=>SS*=>SS*=>Sa*=>SS+a*=>Sa+a*=>aa+a*

编译原理习题答案

编译原理习题答案

编译原理习题答案

《编译原理》习题答案:

第⼀次:

P14

2、何谓源程序、⽬标程序、翻译程序、汇编程序、编译程序和解释程序?它们之间可能有何种关系?

答:被翻译的程序称为源程序;

翻译出来的程序称为⽬标程序或⽬标代码;

将汇编语⾔和⾼级语⾔编写的程序翻译成等价的机器语⾔,实现此功能的程序称为翻译程序;

把汇编语⾔写的源程序翻译成机器语⾔的⽬标程序称为汇编程序;

解释程序不是直接将⾼级语⾔的源程序翻译成⽬标程序后再执⾏,⽽是⼀个个语句读⼊源程序,即边解释边执⾏;

编译程序是将⾼级语⾔写的源程序翻译成⽬标语⾔的程序。

关系:汇编程序、解释程序和编译程序都是翻译程序,具体见P4 图 1.3。

P14

3、编译程序是由哪些部分组成?试述各部分的功能?

答:编译程序主要由8个部分组成:(1)词法分析程序;(2)语法分析程序;(3)语义分析程序;(4)中间代码⽣成;(5)代码优化程序;(6)⽬标代码⽣成程序;(7)错误检查和处理程序;(8)信息表管理程序。具体功能见P7-9。

P14

4、语法分析和语义分析有什么不同?试举例说明。

答:语法分析是将单词流分析如何组成句⼦⽽句⼦⼜如何组成程序,看句⼦乃⾄程序是否符合语法规则,例如:对变量 x:= y 符合语法规则就通过。语义分析是对语句意义进⾏检查,如赋值语句中x与y类型要⼀致,否则语法分析正确,语义分析则错误。

P15

5、编译程序分遍由哪些因素决定?

答:计算机存储容量⼤⼩;编译程序功能强弱;源语⾔繁简;⽬标程序优化程度;设计和实现编译程序时使⽤⼯具的先进程度以及参加⼈员多少和素质等等。

编译原理_第三版_课后答案

编译原理_第三版_课后答案

4: 0: 7: A b a b a a b S
2: 1:
DFA 构造LR(0)项目集规范族也可以用GO函数来计算得到。所得到的项目集 规范族与上图中的项目集一样: ={,,,,} GO(,a)={ }=
GO(,b)={ }= GO(,S)={ ,,,,,}= GO(,A)={ ,,,,}= GO(,a)={ }= GO(,b)={ }= GO(,S)={ ,,,,}= GO(,A)={ ,,,,,}= GO(,a)={ }= GO(,b)={ }= GO(,S)={ ,,,,,}= GO(,A)={ ,,,,}= GO(,a)={ }= GO(,b)={ }= GO(,S)={ ,,,,}= GO(,A)={ ,,,,,}= GO(,a)={ }= GO(,b)={ }= GO(,S)={ ,,,,,}= GO(,A)={ ,,,,}= GO(,a)={ }= GO(,b)={ }= GO(,S)={ ,,,,}= GO(,A)={ ,,,,,}= 项目集规范族为C={,,,,,,} (3)不是SLR文法 状态3,6,7有移进归约冲突 状态3:FOLLOW(S’)={#}不包含a,b 状态6:FOLLOW(S)={#,a,b}包含a,b,;移进归约冲突无法消解 状态7:FOLLOW(A)={a,b}包含a,b;移进归约冲突消解 所以不是SLR文法。 (4) 构造例如LR(1)项目集规范族 见下图: 对于状态5,因为包含项目[],所以遇到搜索符号a或b时,应该用归 约。又因为状态5包含项目[],所以遇到搜索符号a时,应该移进。因此 存在“移进-归约”矛盾,所以这个文法不是LR(1)文法。

编译原理课后习题答案

编译原理课后习题答案

编译原理课后习题答案 客户答案网()一、填空题:1-01.编译程序的工作过程一般可以划分为 词法分析,语法分析,语义分析,之间代码生成,代码优化 等几个基本阶段,同时还会伴有 表格处理 和 出错处理 .1-02.若源程序是用高级语言编写的,目标程序是 机器语言程序或汇编程序 ,则其翻译程序称为编译程序.1-03.编译方式与解释方式的根本区别在于 是否生成目标代码 .1-04.翻译程序是这样一种程序,它能够将 用甲语言书写的程序 转换成与其等价的 用乙语言书写的程序 .1-05.对编译程序而言,输入数据是 源程序 ,输出结果是 目标程序 .1-06.如果编译程序生成的目标程序是机器代码程序,则源程序的执行分为两大阶段: 编译阶段 和 运行阶段.如果编译程序生成的目标程序是汇编语言程序,则源程序的执行分为三个阶段: 编译阶段 , 汇编阶段 和运行阶段 .1-07.若源程序是用高级语言编写的,目标程序是机器语言程序或汇编程序 ,则其翻译程序称为 编译程序 。1-08.一个典型的编译程序中,不仅包括词法分析、语法分析、中间代码生成、代码优化、目标代码生成等五个部分,还应包括表格处理和出错处理。其中,词法分析器用于识别 单词 。1-09.编译方式与解释方式的根本区别为是否生成目标代码。2-01.所谓最右推导是指: 任何一步α?β都是对α中最右非终结符进行替换的 。2-02.一个上下文无关文法所含四个组成部分是 一组终结符号、一组非终结符号、一个开始符号、一组产生式 。2-03.产生式是用于定义 语法成分 的一种书写规则。2-04.设G[S]是给定文法,则由文法G所定义的语言L(G)可描述为: L(G)={x│S x,x∈VT*} 。2-05.设G是一个给定的文法,S是文法的开始符号,如果S x(其中x∈V*),则称x是文法的一个句型 。2-06.设G是一个给定的文法,S是文法的开始符号,如果S x(其中x∈VT*),则称x是文法的一个句子3-01.扫描器的任务是从源程序中识别出一个个 单词符号 。4-01.语法分析最常用的两类方法是 自上而下 和 自下而上 分析法。4-02.语法分析的任务是识别给定的终极符串是否为给定文法的句子。4-03.递归下降法不允许任一非终极符是直接 左 递归的。4-04.自顶向下的语法分析方法的关键是 如何选择候选式 的问题。4-05.递归下降分析法是自 顶向上 分析方法。4-06.自顶向下的语法分析方法的基本思想是:从文法的 开始符号 开始,根据给定的输入串并按照文法的产生式一步一步的向下进行直接推导,试图推导出文法的 句子 ,使之与给定的输入串匹配

编译原理习题与答案

编译原理习题与答案

SELECT(S→A) =FIRST(A)=((,)) SELECT(A→BA’)=((,)) SELECT(A’→iBA’) ={i} SELECT(A’→ε)= FOLLOW(A’)= {$,*} SELECT(B→CB’)=((,)) SELECT(B’ →+CB’) ={+} SELECT(B’→ε)= {i, $,*} SELECT(C→)A*)={)} SELECT(C→( )= {(} 因为同一非终结符的不同产生式的Select集交集为空,所以 改写后的文法是LL(1)文法。 2)求经改写后的文法的每个非终结符的FIRST集和 FOLLOW集。 在上步中已经求出。
b
6
b
b
0 1 2 3 4 5 6 7
a 1 3 - 3 3 5 6 6
b 2 4 5 6 5 7 6 7
第三章
对上图的 DFA 进行最小化。首先将
状态分为非终态集和终态集两部分: 0 {0,1,2,5}和{3,4,6,7}。 1
由终态集可知,对于状态 3、 6、 7,
无论输入字符是 a 还是 b 的下一状态 均为终态集,而状态 4 在输入字符 b 的下一状态落入非终态集,故将其 化为分{0,1,2,5}, {4}, {3,6,7}
3.4 给出文法G[S],构造相应最小的DFA。 G:S→aS | bA | b A→aS 解:由文法到NFA的转换有两种方法: ① 由文法到正规式,再由正规式到NFA

编译原理习题参考答案

编译原理习题参考答案

编译原理习题参考答案

第⼆章

2.构造产⽣下列语⾔的⽂法

(2){a n b m c p|n,m,p≥0}

解: G(S) :S→aS|X,X→bX|Y,Y→cY|ε

(3){a n # b n|n≥0}∪{cn # dn|n≥0}

解: G(S):S→X,S→Y,X→aXb|#, Y→cYd|# }

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

解:G(S):S→J|IBJ,B→0B|IB|ε,I→J|2|4|6|8, J→1|3|5|7|9}

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

解:对应⽂法为 S→0A|1B|ε,A→0S|1C B→0C|1S C→1A|0B

3.描述语⾔特点

(2)S→SS S→1A0 A→1A0 A→ε

解:L(G)={1n10n11n20n2… 1nm0nm |n1,n2,…,nm≥0;且n1,n2,…nm 不全

为零}该语⾔特点是:产⽣的句⼦中,0、1 个数相同,并且若⼲相接的1 后必然紧接数量相同连续的0。(5)S→aSS S→a

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

5. (1) 解:由于此⽂法包含以下规则:AA→ε,所以此⽂法是0 型⽂法。

7.解:

(1)aacb 是⽂法G[S]中的句⼦,相应语法树是:

最右推导:S=>aAcB=>aAcb=>aacb

最左推导:S=>aAcB=>aacB=>aacb

(3)aacbccb 不是⽂法G[S]中的句⼦

aacbccb 不能从S推导得到时,它仅是⽂法G[S]的⼀个句型的⼀部分,⽽不是⼀个句⼦。

编译原理第三版课后习题答案

编译原理第三版课后习题答案

N 27 34 N 68
ND 27 D 68
N 127 568
D 127
0127
P36-7
G(S)
O N D S A
1|3|5|7| 9 2|4|6|8|O 0| N O| AO AD | N
P36-8
文法:
E T F
T| E T|E T F |T * F | T / F ( E )| i
最左推导 :
***************/
P36-11
/*************** L1:
S A C
L2:
AC aAb | ab cC |
S A B
L3:
AB aA | bBc | bc
S A B
L4:
AB aAb | aBb |
S A B
A|B 0 A1 | 1B0 | A
***************/
第三章习题参考答案
P64– 7
(1)
X 0 1 X 1
1( 01 | ) * 101
Y
1 2 3
0 4
1 5 Y
1 确定化: 0 {X} φ {1,2,3} {2,3} {2,3,4} {2,3,5} {2,3,4,Y} 0 1 0 0 0 1 1 1 0 1 1 最小化: 1 φ φ {2,3} {2,3} {2,3,5} {2,3} {2,3,5} 1 {1,2,3} φ {2,3,4} {2,3,4} {2,3,4} {2,3,4,Y} {2,3,4,}

编译原理习题及答案(整理后)

编译原理习题及答案(整理后)

编译原理习题及答案(整理后)

第⼀章

1、将编译程序分成若⼲个“遍”是为了。

b.使程序的结构更加清晰

2、构造编译程序应掌握。

a.源程序b.⽬标语⾔

c.编译⽅法

3、变量应当。

c.既持有左值⼜持有右值

4、编译程序绝⼤多数时间花在上。

d.管理表格

5、不可能是⽬标代码。

d.中间代码

6、使⽤可以定义⼀个程序的意义。

a.语义规则

7、词法分析器的输⼊是。

b.源程序

8、中间代码⽣成时所遵循的是- 。

c.语义规则

9、编译程序是对。

d.⾼级语⾔的翻译

10、语法分析应遵循。

c.构词规则

⼆、多项选择题

1、编译程序各阶段的⼯作都涉及到。

b.表格管理c.出错处理

2、编译程序⼯作时,通常有阶段。

a.词法分析b.语法分析c.中间代码⽣成e.⽬标代码⽣成

三、填空题

1、解释程序和编译程序的区别在于是否⽣成⽬标程序。

2、编译过程通常可分为5个阶段,分别是词法分析、语法分析中间代码⽣成、代码优化和⽬标代码⽣成。

3、编译程序⼯作过程中,第⼀段输⼊是源程序,最后阶段的输出为标代码⽣成程序。

4、编译程序是指将源程序程序翻译成⽬标语⾔程序的程序。

⼀、单项选择题

1、⽂法G:S→xSx|y所识别的语⾔是。

a. xyx

b. (xyx)*

c. x n yx n(n≥0)

d. x*yx*

2、⽂法G描述的语⾔L(G)是指。

a. L(G)={α|S+?α , α∈V T*}

b. L(G)={α|S*?α, α∈V T*}

c. L(G)={α|S*?α,α∈(V T∪V N*)}

d. L(G)={α|S+?α, α∈(V T∪V N*)}

3、有限状态⾃动机能识别。

编译原理习题答案

编译原理习题答案

编译原理习题答案

编译原理习题答案

编译原理是计算机科学中的重要课程,它研究的是如何将高级程序语言翻译成机器语言的过程。在学习编译原理的过程中,习题是必不可少的一部分。通过解答习题,我们可以更好地理解和掌握编译原理的相关知识。下面是一些编译原理习题的答案,希望对大家的学习有所帮助。

1. 什么是编译器?

答:编译器是一种将高级程序语言翻译成机器语言的程序。它接收源程序作为输入,经过词法分析、语法分析、语义分析、中间代码生成、代码优化和目标代码生成等阶段的处理,最终生成可执行的目标程序。

2. 什么是词法分析?

答:词法分析是编译器的第一阶段,它将源程序分割成一个个词素(token),并识别出每个词素的类型。常见的词素类型包括关键字、标识符、常量、运算符和界符等。

3. 什么是语法分析?

答:语法分析是编译器的第二阶段,它根据词法分析得到的词素序列,判断它们是否符合给定的语法规则。语法分析使用的是上下文无关文法,常用的语法分析方法有LL(1)分析和LR(1)分析等。

4. 什么是语义分析?

答:语义分析是编译器的第三阶段,它对源程序进行语义检查,并生成中间代码。语义分析主要包括类型检查、作用域分析和语义动作等。

5. 什么是中间代码生成?

答:中间代码生成是编译器的第四阶段,它将源程序转换成一种中间表示形式,以便进行代码优化和目标代码生成。常见的中间表示形式有抽象语法树(AST)、三地址码和四元式等。

6. 什么是代码优化?

答:代码优化是编译器的第五阶段,它通过对中间代码进行分析和变换,以提

高目标程序的执行效率。常见的代码优化技术包括常量传播、公共子表达式消

(完整版)编译原理课后习题答案

(完整版)编译原理课后习题答案

(完整版)编译原理课后习题答案

第一章

1.典型的编译程序在逻辑功能上由哪几部分组成?

答:编译程序主要由以下几个部分组成:词法分析、语法分析、语义分析、中间代码生成、中间代码优化、目标代码生成、错误处理、表格管理。

2. 实现编译程序的主要方法有哪些?

答:主要有:转换法、移植法、自展法、自动生成法。

3. 将用户使用高级语言编写的程序翻译为可直接执行的机器语言程序有哪几种主要的方式?

答:编译法、解释法。

4. 编译方式和解释方式的根本区别是什么?

答:编译方式:是将源程序经编译得到可执行文件后,就可脱离源程序和编译程序单独执行,所以编译方式的效率高,执行速度快;

解释方式:在执行时,必须源程序和解释程序同时参与才能运行,其不产生可执行程序文件,效率低,执行速度慢。

第二章

1.乔姆斯基文法体系中将文法分为哪几类?文法的分类同程序设计语言的设计与实现关

系如何?

答:1)0型文法、1型文法、2型文法、3型文法。

2)

2. 写一个文法,使其语言是偶整数的集合,每个偶整数不以0为前导。

答:

Z→SME | B

S→1|2|3|4|5|6|7|8|9

M→ε | D | MD

D→0|S

B→2|4|6|8

E→0|B

3. 设文法G为:

N→ D|ND

D→ 0|1|2|3|4|5|6|7|8|9

请给出句子123、301和75431的最右推导和最左推导。

答:N?ND?N3?ND3?N23?D23?123

N?ND?NDD?DDD?1DD?12D?123

N?ND?N1?ND1?N01?D01?301

N?ND?NDD?DDD?3DD?30D?301

编译原理第三版课后习题答案

编译原理第三版课后习题答案

目录

P36-6 (2)

P36-7 (2)

P36-8 (2)

P36-9 (3)

P36-10 (3)

P36-11 (3)

P64–7 (4)

P64–8 (5)

P64–12 (5)

P64–14 (7)

P81–1 (8)

P81–2 (9)

P81–3 (12)

P133–1 (12)

P133–2 (12)

P133–3 (14)

P134–5 (15)

P164–5 (19)

P164–7 (19)

P217–1 (19)

P217–3 (20)

P218–4 (20)

P218–5 (21)

P218–6 (22)

P218–7 (22)

P219–12 (22)

P270–9 (24)

P36-6

(1)

L G ()1是0~9组成的数字串

(2)

最左推导:

N ND NDD NDDD DDDD DDD DD D N ND DD D N ND NDD DDD DD D ⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒0010120127334

556568

最右推导:

N ND N ND N ND N D N ND N D N ND N ND N D ⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒⇒77272712712701274434

886868568

P36-7

G(S)

O N O D N S O AO A AD N

→→→→→1357924680|||||||||||

P36-8

文法:

E T E T E T T

F T F T F F E i

→+-→→|||*|/()| 最左推导:

E E T T T

F T i T i T F i F F i i F i i i E T T F F F i F i E i E T i T T i F T i i T i i F i i i ⇒+⇒+⇒+⇒+⇒+⇒+⇒+⇒+⇒⇒⇒⇒⇒⇒+⇒+⇒+⇒+⇒+⇒+********()*()*()*()*()*()*()

编译原理课后习题答案ch3

编译原理课后习题答案ch3

答案: (1) S→AA A→aAb|ε (2) S→1S0|A A→0A1|ε (3) S→0S0|aSa|a
第 16 题 给出生成下述语言的三型文法: (1){an|n >=0 } (2) { anbm|n,m>=1 } (3){anbmck|n,m,k>=0 } 答案: (1) S→aS|ε (2) S→aA A→aA|B B→bB|b (3) A→aA|B B→bB|C C→cC|ε
答案:L(G[S])={anbmclan,n,m,l≥0} 第2题 文法 G[N]为: N→D|ND D→0|1|2|3|4|5|6|7|8|9 G[N]的语言是什么? 答案: G[N]的语言是 V+。V={0,1,2,3,4,5,6,7,8,9} N=>ND=>NDD.... =>NDDDD...D=>D......D 或者:允许 0 开头的非负整数?
答案: 可为句子 a+a*a 构造两个不同的最右推导: 〈运算符〉 〈表达式〉 最右推导 1 〈表达式〉 〈表达式〉 〈表达式〉 〈运算符〉a 〈表达式〉* a 〈表达式〉 〈运算符〉 〈表达式〉* a 〈表达式〉 〈运算符〉a * a 〈表达式〉+ a * a a+a*a 〈运算符〉 〈表达式〉 最右推导 2 〈表达式〉 〈表达式〉 〈表达式〉 〈运算符〉 〈表达式〉 〈运算符〉 〈表达式〉 〈表达式〉 〈运算符〉 〈表达式〉 〈运算符〉 a 〈表达式〉 〈运算符〉 〈表达式〉 * a 〈表达式〉 〈运算符〉a * a 〈表达式〉+ a * a a+a*a

编译原理课后作业参考答案

编译原理课后作业参考答案

作业参考答案

第二章 高级语言及其语法描述

6、(1)L (G 6)={0,1,2,......,9}+

(2)最左推导:

N=>ND=>NDD=>NDDD=>DDDD=>0DDD=>01DD=>012D=>0127 N=>ND=>DD=>3D=>34

N=>ND=>NDD=>DDD=>5DD=>56D=>568 最右推导:

N=>ND =>N7=>ND7=>N27=>ND27=>N127=>D127=>0127 N=>ND=>N4=>D4=>34

N=>ND=>N8=>ND8=>N68=>D68=>568 7、G:S →ABC | AC | C

A →1|2|3|4|5|6|7|8|9

B →BB|0|1|2|3|4|5|6|7|8|9

C →1|3|5|7|9

8、(1)最左推导:

E=>E+T=>T+T=>F+T=>i+T=>i+T*F=>i+F*F=>i+i*F=>i+i*i

E=>T=>T*F=>F*F=>i*F=>i*(E)=>i*(E+T)=>i*(T+T)=>i*(F+T)=>i*(i+T)=>i*(i+F)=>i*(i+i) 最右推导:

E=>E+T=>E+T*F=>E+T*i=>E+F*i=>E+i*i=>T+i*i=>F+i*i=>i+i*i

E=>T=>T*F=>T*(E)=>T*(E+T)=>T*(E+F)=>T*(E+i)=>T*(T+i)=>T*(F+i)=>T*(i+i)=>F*(i+i)=>i*(i+i) (2)

9、证明:该文法存在一个句子iiiei 有两棵不同语法分析树,如下所示,因此该文法是二义的。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《编译原理》习题答案:

第一次:

P14

2、何谓源程序、目标程序、翻译程序、汇编程序、编译程序和解释程序?它们之间可能有何种关系?

答:被翻译的程序称为源程序;

翻译出来的程序称为目标程序或目标代码;

将汇编语言和高级语言编写的程序翻译成等价的机器语言,实现此功能的程序称为翻译程序;

把汇编语言写的源程序翻译成机器语言的目标程序称为汇编程序;

解释程序不是直接将高级语言的源程序翻译成目标程序后再执行,而是一个个语句读入源程序,即边解释边执行;

编译程序是将高级语言写的源程序翻译成目标语言的程序。

关系:汇编程序、解释程序和编译程序都是翻译程序,具体见P4 图 1.3。

P14

3、编译程序是由哪些部分组成?试述各部分的功能?

答:编译程序主要由8个部分组成:(1)词法分析程序;(2)语法分析程序;(3)语义分析程序;(4)中间代码生成;(5)代码优化程序;(6)目标代码生成程序;(7)错误检查和处理程序;(8)信息表管理程序。具体功能见P7-9。

P14

4、语法分析和语义分析有什么不同?试举例说明。

答:语法分析是将单词流分析如何组成句子而句子又如何组成程序,看句子乃至程序是否符合语法规则,例如:对变量x:= y 符合语法规则就通过。语义分析是对语句意义进行检查,如赋值语句中x与y类型要一致,否则语法分析正确,语义分析则错误。

P15

5、编译程序分遍由哪些因素决定?

答:计算机存储容量大小;编译程序功能强弱;源语言繁简;目标程序优化程度;设计和实现编译程序时使用工具的先进程度以及参加人员多少和素质等等。

补充:

1、为什么要对单词进行内部编码?其原则是什么?对标识符是如何进行内部编码的?

答:内部编码从“源字符串”中识别单词并确定单词的类型和值;原则:长度统一,即刻画了单词本身,也刻画了它所具有的属性,以供其它部分分析使用。对于标识符编码,先判断出该单词是标识符,然后在类别编码中写入相关信息,以表示为标识符,再根据具体标识符的含义编码该单词的值。

补充:

2、赋值语句:A:= 5 * C的语法和语义指的是什么?

答:语法分析将检查该语句是否符合赋值语句规则,语义是指将 5 * C 的结果赋值为 A 。第二次作业:

P38

1、设T1={11,010},T2={0,01,1001},计算:T2T1,T1*,T2+。

T2T1={011,0010,0111,01010,100111,1001010}

T1*={ε,11,010,1111,11010,01011,010010……}

T2+={0,01,1001,00,001,01001,010,0101……}

P38 3、令A={0,1,2},写出集合A+和A*的七个最短符号串。

A+:0,1,2,00,01,02,10(有多种可能)

A*:ε,0,1,2,00,01,02(有多种可能)

P38

5、试证明:A+=A A*=A*A。

证明:A+=A1∪A2∪……∪A n∪……

A*=A0(即{ε})∪A+

A A*=A(A0∪A+)=A∪A+=A+=A+∪A=(A0∪A+)A=A*A(证毕)

P38

7、设有文法G[S]:

S∷=A

A∷=B | IF A THEN A ELSE A

B∷=C | B+C | +C

C∷=D | C*D | *D

D∷=X | (A) | -D 试写出V N和V T。

V N={S,A,B,C,D}

V T={IF,THEN,ELSE,+,*,X,(,),-}

P38-39

8、设有文法G[S]:

S∷=aAb

A∷=BcA | B

B∷=idt |ε

试问下列符号串(1)aidtcBcAb (3)ab (5)aidtcidtcidtb 是否为该文法的句型或句子。

(1)S⇒aAb⇒aBcAb⇒aidtcAb⇒aidtcBcAb 句型但不是句子;

(3)S⇒aAb⇒aBb⇒aεb⇒ab 是句型也是句子;

(5)S⇒aAb⇒aBcAb⇒aidtcAb⇒aidtcBcAb⇒aidtcidtcBb⇒aidtcidtcidtb句型也是句子。

P39

10、给定文法:

S∷=aB | bA

A∷=aS | bAA | a

B∷=bS |aBB|b 该文法所描述的语言是什么?

L(G)={相同个数的a与b以任意次序连接而成的非空符号串}。

P39

11、试分别描述下列文法所产生的语言(文法开始符号为S):

(1)S∷=0S | 01

(2)S∷=aaS | bc

(1)L(G)={0n1| n≥1};

(2)L(G)={a2n bc | n≥0}。

P39

12、试分别构造产生下列语言的文法:

(1){ ab n a | n=0,1,2,3……}

(3){ aba n | n≥1}

(5){ a n b m c p | n,m,p≥0}

(1)G={V N,V T,P,S},V N={S,A },V T={a,b},

P:S∷=aAa

A∷=bA |ε

(3)G={V N,V T,P,S},V N={S,A },V T={a,b},

P:S∷=abA

A∷=aA |ε或A∷=aA | a

(5)①G={V N,V T,P,S},V N={S,A ,B,C},V T={a,b,c},

P:S∷=ABC

A∷=aA |ε

B∷=bB |ε

C∷=cC |ε

②G={V N,V T,P,S},V N={S,T,C},V T={a,b,c},

P:S∷=TC

T∷=aTb |ε

C∷=cC |ε

③G={V N,V T,P,S},V N={S },V T={a,b,c},

P:S∷=aS | bS | cS |ε

第三次作业:

P39

15. 设文法G规则为:

S::=AB

B::=a|Sb

A::=Aa|bB

对下列句型给出推导语法树,并求出其句型短语,简单短语和句柄。

(2)baabaab (3)bBABb

(2)S

A B

A a S b

b B A B

a b B a

a

句型baabaab的短语a, ba, baa, baab,简单短语a,句柄a

S

(3)

A B

b B

S b

A B

短语bB, AB, ABb,

简单短语bB, AB,

句柄bB

P40 18. 分别对i+i*i 和i+i+i中每一个句子构造两棵语法树,从而证明下述文法G[<表达式>]是二义的。

相关文档
最新文档