没有合适的资源?快使用搜索试试~ 我知道了~
编译原理答案(编译原理及编译程序构造)
5星 · 超过95%的资源 需积分: 50 215 下载量 120 浏览量
2010-10-28
23:21:25
上传
评论 7
收藏 523KB DOC 举报
温馨提示
试读
25页
自己大概整理了一下,希望对大家有用。如果你们有更好的答案希望能共享一下哈
资源推荐
资源详情
资源评论
raw.doc 8/6/2021 Page 1 of 25
第一章 引言
1.解释下列名词
源程序,目标程序,翻译程序,汇编程序,编译程序,遍
答: 源程序: 由汇编语言或高级程序语言编写的程序。
目标程序:由目标语言编写的程序。
翻译程序:把源程序转化为目标程序的程序。
汇编程序:把由汇编语言编写的源程序转换成目标程序(由机器语言编写)的翻译程序。
编译程序:把由高级程序语言编写的源程序转换为一台具体计算机的机器语言或汇编语言程序的翻译程序。
遍:对源程序或源程序的中间形式从头到尾扫描一遍,并做有关的加工处理,生成新的源程序的中间形式或目标程序。
2.典型的编译程序可划分为哪几个主要的逻辑部分?各部分的主要功能是什么?
答:典型的编译程序可划分 7 个主要的逻辑部分(模块)。
—词法分析 将字符串形式的源程序分解为具有独立语法语意的单词符
号(Token);
—语法分析 从词法分析程序取得源程序,并将一个或多个单词组合为
语言的各种语法类。
—语义分析 确定源程序的意义(语义)。
—代码生成 将源程序的中间形式转化为汇编语言或机器语言。
—代码优化 获得更高效的目标程序。
—出错出理 对源程序的错误精确定位并能够跳过错误继续编译。
—符号表管理 保存每个标志符及其属性,并保存过程名及其参数。
注意:区分编译过程的 5 个阶段和编译程序的 7 个逻辑组成部分。
第二章 文法和语言的概念和表示
设关于句子的一组规则为:
〈句子〉::=〈主语〉〈谓语〉
〈主语〉::=〈名词短语〉
〈名词短语〉::=〈名词〉
〈名词短语〉::= 〈形容词〉〈名词短语〉
〈形容词〉::=big
〈形容词〉::=brown
〈形容词〉::=roasted
〈名词〉::=John
〈名词〉::=peanut
〈谓语〉::=〈动词〉〈直接宾语〉
〈动词〉::=ate
〈直接宾语〉::=〈冠词〉〈名词短语〉
〈冠词〉::=the
给出下述句子的推导,并画出语法树。
解:(A) 〈句子〉=>〈主语〉〈谓语〉
=>〈主语〉〈动词〉〈直接宾语〉
=>〈主语〉〈动词〉〈冠词〉〈名词短语〉
=>〈主语〉〈动词〉〈冠词〉〈形容词〉〈名词短语〉
=>〈主语〉〈动词〉〈冠词〉〈形容词〉〈名词〉
=>〈主语〉〈动词〉〈冠词〉〈形容词〉peanut
=>〈主语〉〈动词〉〈冠词〉big peanut
=>〈主语〉〈动词〉the big peanut
=>〈主语〉ate the big peanut
Created by ITLearner---2004 8/6/2021 - 1 -
raw.doc 8/6/2021 Page 2 of 25
=>〈名词短语〉ate the big peanut
=>〈名词〉ate the big peanut
=> John ate the big peanut
(语法树略)
(B) 〈句子〉=>〈主语〉〈谓语〉
=>〈名词短语〉〈谓语〉
=>〈名词〉〈谓语〉
=> John〈谓语〉
=> John〈动词〉〈直接宾语〉
=> John ate〈直接宾语〉
=> John ate〈冠词〉〈名词短语〉
=> John ate the〈名词短语〉
=> John ate the〈形容词〉〈名词短语〉
=> John ate the big〈名词短语〉
=> John ate the big〈形容词〉〈名词短语〉
=> John ate the big brown〈名词短语〉
=> John ate the big brown〈名词〉
=> John ate the big brown peanut
(语法树略)
(C) 〈句子〉=>〈主语〉〈谓语〉
=>〈名词短语〉〈谓语〉
=>〈名词〉〈谓语〉
=> John〈谓语〉
=> John〈动词〉〈直接宾语〉
=> John ate〈直接宾语〉
=> John ate〈冠词〉〈名词短语〉
=> John ate the〈名词短语〉
=> John ate the〈形容词〉〈名词短语〉
=> John ate the big〈名词短语〉
=> John ate the big〈形容词〉〈名词短语〉
=> John ate the big roasted〈名词短语〉
=> John ate the big roasted〈名词〉
=> John ate the big roasted peanut
(语法树略)
2.利用规则 2-1,除最左推导外,给出句子 the big elephant ate the peanut 的另外两种推导(其中一种为最右推导)。
答:(A) 最右推导
〈句子〉=>〈主语〉〈谓语〉
=>〈主语〉〈动词〉〈直接宾语〉
=>〈主语〉〈动词〉〈冠词〉〈名词〉
=>〈主语〉〈动词〉〈冠词〉peanut
=>〈主语〉〈动词〉the peanut
=>〈主语〉ate the peanut
=>〈冠词〉〈形容词〉〈名词〉ate the peanut
=>〈冠词〉〈形容词〉 elephant ate the peanut
=>〈冠词〉big elephant ate the peanut
=> the big elephant ate the peanut
(B) 〈句子〉=>〈主语〉〈谓语〉
Created by ITLearner---2004 8/6/2021 - 2 -
raw.doc 8/6/2021 Page 3 of 25
=>〈主语〉〈动词〉〈直接宾语〉
=>〈冠词〉〈形容词〉〈名词〉〈动词〉〈直接宾语〉
=>〈冠词〉〈形容词〉〈名词〉〈动词〉〈冠词〉〈名词〉
=> the〈形容词〉〈名词〉〈动词〉〈冠词〉〈名词〉
=> the big〈名词〉〈动词〉〈冠词〉〈名词〉
=> the big elephant〈动词〉〈冠词〉〈名词〉
=> the big elephant ate〈冠词〉〈名词〉
=>the big elephant ate the〈名词〉
=>the big elephant ate the peanut
P19
1.令 A={$},又令 Z=$,写出如下的符号串以及它们的长度:
Z,ZZ,Z
2
,Z
3
,Z
0
,A*=?
解:Z=$ |Z|=1
ZZ=$$ |ZZ|=2
Z
2
=ZZ=$$ | Z
2
|=2
Z
3
=$$$ | Z
3
|=3
Z
0
=ε | Z
0
|=1
A*={ε,$,$$,$$$,……} |A*|=∞
2.令 A={0,1,2},又令 x=01,y=2,z=001,写出如下符号串及它们的长度:
xy, xyz, x
4
, (x
3
)(y
2
), (xy)
2
解:xy=012, |xy|=3 xyz =012001, | xyz |=6
x
4
=xxxx=01010101, | x
4
|=8
(x
3
)(y
2
)=01010122, | (x
3
)(y
2
)|=8
(xy)
2
=012012, |(xy)
2
|=6
令 A={0,1,2},写出集合 A
+
和集合 A*的 7 个最短的符号串。
解:A
+
的 7 个最短的符号串为:
0,1,2,00,01,02,10 (答案不唯一)
A*的 7 个最短的符号串为:
ε,0,1,2,00,01,02, (答案不唯一)
4. 试证明:A
+
=AA*=A*A
证:∵ A*=A
0
∪A
+
,A
+
=A
1
∪A
2
∪…∪A
n
∪…
得:A*=A
0
∪A
1
∪A
2
∪…∪A
n
∪…
∴ AA*=A(A
0
∪A
1
∪A
2
∪…∪A
n
∪…)
= AA
0
∪AA
1
∪AA
2
∪…∪A A
n
∪…
=A∪A
2
∪A
3
∪A
n +1
∪…
= A
+
同理可得:A*A =(A
0
∪A
1
∪A
2
∪…∪A
n
∪…)A
=A
0
A∪A
1
A∪A
2
A∪…∪A
N
A∪…
= A∪A
2
∪A
3
∪A
N+1
∪…
= A
+
因此: A
+
=AA*=A*A
P26
1.设 G[〈标志符〉]的规则是 :
〈标志符〉::=a|b|c|〈标志符〉a|〈标志符〉c|〈标志符〉0|〈标志符〉1
试写出 V
T
和 V
N
,并对下列符号串 a,ab0,a0c01,0a,11,aaa 给出可能的一些推导。
解:V
T
={a,b,c,0,1}, V
N
={〈标志符〉}
不能推导出 ab0,11,0a
Created by ITLearner---2004 8/6/2021 - 3 -
raw.doc 8/6/2021 Page 4 of 25
〈标志符〉=>a
〈标志符〉=>〈标志符〉1
=>〈标志符〉01
=>〈标志符〉c01
=>〈标志符〉0c01
=> a0c01
(4)〈标志符〉=>〈标志符〉a
=>〈标志符〉aa
=>aaa
2. 写一文法,使其语言是偶整数的集合。
解:G[〈偶整数〉]:
〈偶整数〉::=〈符号〉〈偶数字〉|〈符号〉〈数字串〉〈偶数字〉,(作用是一位和多位)
〈符号〉::= + | — |ε
〈数字串〉::= 〈数字串〉〈数字〉|〈数字〉
〈数字〉::= 〈偶数字〉| 1 | 3 | 5 | 7 | 9
〈偶数字〉::=0 | 2 | 4 | 6 | 8
3. 写一文法,使其语言是偶整数的集合,但不允许有以 0 开头的偶整数。
解:G[〈偶整数〉]:
〈偶整数〉::= 〈符号〉〈单偶数〉|〈符号〉〈首数字〉〈数字串〉〈尾偶数〉
〈符号〉::= + | — |ε
〈单偶数〉::=2 | 4 | 6 | 8
〈尾偶数〉::= 0 |〈单偶数〉
〈首数字〉::= 1 | 3 | 5 | 7 | 9 |〈单偶数〉
〈数字串〉::= 〈数字串〉〈数字〉|〈数字〉|ε
〈数字〉::= 0 |〈首数字〉
4. 设文法 G 的规则是:
〈A〉::=b<A>| cc
试证明:cc, bcc, bbcc, bbbcc∈L[G]
证:(1)〈 A〉=>cc
(2)〈 A〉=>b〈A〉=>bcc
(3)〈 A〉=>b〈A〉=>bb〈A〉=>bbcc
(4)〈 A〉=>b〈A〉=>bb〈A〉=>bbb〈A〉=>bbbcc
又∵cc, bcc, bbcc, bbbcc∈Vt*
∴由语言定义,cc, bcc, bbcc, bbbcc∈L[G]
5. 试对如下语言构造相应文法:
{ a(b
n
)a | n=0,1,2,3,……},其中左右圆括号为终结符。
{ (a
n
)( b
n
) | n=1,2,3,……}
解:(1)文法[G〈S〉]:
S::= a(B)a
B::= bB |b|ε
( 2 ) 文法[G〈S〉]:
S ::= (A)(B)
A::= aA|a
B::= bB|b
6. 文法 G
3
[〈表达式〉]:
〈表达式〉::=〈项〉|〈表达式〉+〈项〉|〈表达式〉—〈项〉
〈项〉::=〈因子〉|〈项〉
*
〈因子〉|〈项〉/〈因子〉
Created by ITLearner---2004 8/6/2021 - 4 -
raw.doc 8/6/2021 Page 5 of 25
〈因子〉::=(〈表达式〉) | i
试给出下列符号串的推导:
i, (i), i
*
i, i
*
i+i, i
*
(i+i)
解:(1)〈表达式〉 =>〈项〉
=>〈因子〉
=> i
( 2 ) 〈表达式〉=>〈项〉
=>〈因子〉
=>(〈表达式〉)
=>(〈项〉)
=>(〈因子〉)
=>(i)
(3)〈表达式〉=>〈项〉
=>〈项〉*〈因子〉
=>〈项〉* i
=>〈因子〉* i
=> i*i
(4)〈表达式〉 =>〈表达式〉+〈项〉
=>〈表达式〉+〈因子〉
=>〈表达式〉+ i
=>〈项〉+ i
=>〈项〉
*
〈因子〉+ i
=>〈项〉
*
i + i
=>〈因子〉
*
i + i
=> i
*
i + i
(5)〈表达式〉 =>〈项〉
=>〈项〉
*
〈因子〉
=>〈项〉
*
(〈表达式〉)
=>〈项〉
*
(〈表达式〉 +〈项〉)
=>〈项〉
*
(〈表达式〉 +〈因子〉)
=>〈项〉
*
(〈表达式〉 + i)
=>〈项〉
*
(〈项〉 + i)
=>〈项〉
*
(〈因子〉 + i)
=>〈项〉
*
(i+ i)
=>〈因子〉
*
(i+ i)
=> i
*
(i+ i)
7. 对文法 G
3
[〈表达式〉](见上题),列出句型〈表达式〉+〈项〉
*
〈因子〉的所有短语和简单短语。
解:句型〈表达式〉+〈项〉*〈因子〉的短语有:
〈表达式〉+〈项〉*〈因子〉和〈项〉*〈因子〉
简单短语是:〈项〉*〈因子〉
注意
:求短语,简单短语和句柄尽量用语法树。
8. 文法 V::= aaV | bc 的语言是什么?
解:L(G[V])= {a
2n
bc | n=0,1,2,……}
9. 设文法 G 为:
N::=D|ND
D::=0|1|2|3|4|5|6|7|8|9
G 的语言是什么?
Created by ITLearner---2004 8/6/2021 - 5 -
剩余24页未读,继续阅读
leixue1997
- 粉丝: 1
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
- 3
前往页