欢迎来到天天文库
浏览记录
ID:33594771
大小:244.00 KB
页数:31页
时间:2019-02-27
《编译原理与技术练习题汇总》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、《编译原理与技术》练习题31练习11.1为什么高级程序语言需要编译程序?1.2解释下列术语:源程序,目标程序,翻译程序,编译程序,解释程序1.3简单叙述编译程序的主要工作过程。1.4编译程序的典型体系结构包括哪些构件,主要关系如何,请用辅助图示意。1.5编译程序的开发有哪些途径?了解你熟悉的高级编程语言编译程序的开发方式。1.6运用编译技术的软件开发和维护工具有许多类,简单叙述每一类的主要用途。1.7了解一个真实编译系统的组成和基本功能。1.8简单说明学习编译程序的意义和作用。1.9如果机器H上有
2、两个编译:一个把语言A翻译成语言B,另一个把B翻译成C,那么可以把第一个编译的输出作为第二个编译的输入,结果在同一类机器上得到从A到C的编译。请用T形图示意过程和结果。《编译原理与技术》练习题31练习22.1词法分析器的主要任务是什么?2.2下列各种语言的输入字母表是什么?(1)C(2)Pascal(3)Java(4)C#2.3可以把词法分析器写成一个独立运行的程序,也可以把它写成一个子程序,请比较各自的优劣。2.4用高级语言编写一个对C#或Java程序的预处理程序,它的作用是每次调用时都把下一个
3、完整的句子送到扫描缓冲区,去掉注释和无用的空格、制表符、回车、换行。2.5用高级语言实现图2.5所示的Pascal语言数的状态转换图。2.6用高级语言编程实现图2.6所示的小语言的词法扫描器。2.7用自然语言描述下列正规式所表示的语言:(1)0(0
4、1)*0(2)((e
5、0)1)*)*(3)(a
6、b)*a(a
7、b
8、e)(4)(A
9、B
10、...
11、Z)(a
12、b
13、...
14、z)*(5)(aa
15、b)*(a
16、bb)*(6)(0
17、1
18、...
19、9
20、A
21、B
22、C
23、D
24、E)+(t
25、T)2.8为下列语言写正规式(1)所有以
26、小写字母a开头和结尾的串。(2)所有以小写字母a开头或者结尾(或同时满足这两个条件)的串。(3)所有表示偶数的串。(4)所有不以0开始的数字串。(5)能被5整除的10进制数的集合。(6)没有出现重复数字的全体数字串。2.9试构造下列正规式的NFA,并且确定化,然后最小化。(1)(a
27、b)*a(a
28、b)(2)(a
29、
30、b)*a(a
31、b)*(3)ab((ba
32、ab)*(bb
33、aa))*ab(4)00
34、(0
35、1)*
36、11(5)1(0
37、1)*01(6)1(1010*
38、1(010)*1*02.10请分别使用下
39、面的技术证明(a
40、b)*,(a*
41、b*)*以及((a
42、e)b*)*这三个正规式是等价的:(1)仅用正规式的定义及其代数性质;(2)从正规式构造的最小DFA的同构来证明正规式的等价。《编译原理与技术》练习题312.11构造有限自动机M,使得(1)L(M)={anbn
43、n³1};(2)L(M)={anbncn
44、n³1};(3)它能识别S={0,1}上0和1的个数都是偶数的串;(4)它能识别字母表{0,1}上的串,但是串不含两个连续的0和两个连续的1;(5)它能接受形如±dd*,±d*E和±dd的实数,
45、其中d={0,1,2,3,4,5,6,7,8,9}。(6)它能识别{a,b}上不含子串aba的所有串。2.12分别将下列NFA确定化,并画出最小化的DFA:(a)a10a,bb(b)a40a,ba123abbba(c)eabFAa,bBCDebbaSEee2.13下面是URL的一个极其简化的扩展正规式的描述:letter→[A-Za-z]digit→[0-9]letgit→letter
46、digitletgit_hyphen→letgit
47、_letgit_hyphen_string→letgit_h
48、yphen
49、letgit_hyphenletgit_hyphen_stringlabel→letter(letgit_hyphen_string?letgit)?URL→(label.)*label(1)请将这个URL的扩展正规改写成只含字母表{A,B,0,1,_,.}上符号的正规式;(2)构造出识别(1)更简化的URL串的有限自动机。2.14用某种高级语言实现(1)将正规式转换成NFA的算法;(2)将NFA确定化的算法;(3)将DFA最小化的算法。2.15描述下列语言词法记号的正规表达式:(1)
50、描述C浮点数的正规表达式。(2)描述Java表达式的正规表达式。2.16Pascal语言的注释允许两种不同的形式:花括弧对{...},以及括弧星号对(*...*)。(1)构造一个识别这两种注释形式的DFA;(2)用Lex的符号构造它的一个正规式。2.17写一个Lex输入源程序,它将产生一个把C语言程序中(注释除外)的保留字全部大写。《编译原理与技术》练习题31练习33.1 对于文法G3.26[E]E→T
51、E+T
52、E-TT→F
53、T*F
54、T/FF→(E)
55、i证明(i+T)*i是它的一个
此文档下载收益归作者所有