资源描述:
《编译原理1、3章作业答案》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第一章习题1.6.3:对于图1-14中的块结构代码,假设使用常见的声明的静态作用域规则,给出其中12个声明中的每一个的作用域?{intw,x,y,z;/*块B1*/{intx,z;/*块B2*/{intw,x;}/*块B3*/}{intw,x;/*块B4*/{inty,z;}/*块B5*/}}}答:变量作用域声明块WXYZB1B1-B3-B4B1-B2-B4B1-B5B1-B2-B5B2/B2-B3/B2B3B3B3//B4B4B4//B5//B5B5习题1.6.4:下面C代码的打印结果是什么?#definea(x+1)Intx=2;Voidb(){x=a;printf(“%d”,x);}
2、Voidb(){x=1;printf(“%d”,a);}Voidmain(){b();c();}答:输出结果是32调用函数b()时,a=x+1此处x为全局变量值2,故输出为3调用函数c()时,x局部定义为1,此处a=x+1为2,故输出为2第三章习题3.3.2:试描述下列正则表达式定义的语言:(1)a(a
3、b)*a:以a开头和以a结束的中间由任意个a或b组成的串的集合(2)((
4、a)b*)*:由0个和多个b组成的串以及由0个或多个以a开头由任意个b组成的实例所组成的串的集合(3)(a
5、b)*a(a
6、b)(a
7、b):由a或b构成的长度至少为3的且倒数第三个字符为a的串的集合(4)a*ba*ba
8、*ba*:由a、b构成的b的个数为3的串的集合习题3.3.5:试写出下列语言的正则定义:(1)包含5个元音的所有小写字母串,这些串中的元音按顺序出现:a[bcd]e[fgh]i[jklmn]o[pqrst]u[vwxyz](2)所有由按字典递增排序的小写字母组成的串:a*b*c*d*…z*(3)注释,即/*和*/之间的串,且串中没有不在双引号(")中的*/:[/*]([a-zA-Z]
9、("*/"))[*/]习题3.4.1:给出识别练习3.3.2中各个正则表达式所描述的语言的状态转换图(1)a(a
10、b)a(3)(a
11、b)a(a
12、b)(a
13、b)习题3.7.3使用算法3.23和3.20将下列正则表达
14、式转换成DFA(1)(a
15、b)由(a
16、b)生成相应的NFA,如下图所示由上面的NFA生成相应的DFA1)标记集合A,A是-closure(1),即A={1,2,3,5,8}2)标记集合B,B是-closure(move(A,a))={1,2,3,4,5,7,8}3)标记集合C,C是-closure(move(A,b))={1,2,3,5,6,7,8}得到一个只含有三个状态的DFA,其中A是接受状态,其状态转换图如下(2)(a
17、b)由(a
18、b)得到相应的NFA如下图所示由上述NFA得到相应的DFA如下1)标记集合A,A是-closure(0),即A={0,1,2,3,4,5}2)可以得到-clo
19、sure(move(A,a))={0,1,2,3,4,5}=A,-closure(move(A,b))={0,1,2,3,4,5}=A,故该DFA中应只有一个状态A,得到一个一状态的DFA,其状态转换图如下