您好,欢迎访问三七文档
当前位置:首页 > 建筑/环境 > 工程监理 > 编译原理龙书第二版13章
第一章习题1.6.3:对于图1-14中的块结构代码,假设使用常见的声明的静态作用域规则,给出其中12个声明中的每一个的作用域?答:WXYZB1B1-B3-B4B1-B2-B4B1-B5B1-B2-B5B2/B2-B3/B2B3B3B3//B4B4B4//B5//B5B5习题1.6.4:下面C代码的打印结果是什么?答:输出结果是32调用函数b()时,a=x+1此处x为全局变量值2,故输出为3调用函数c()时,x局部定义为1,此处a=x+1为2,故输出为2第三章习题3.3.2:试描述下列正则表达式定义的语言:(1)a(a|b)*a:以a开头和以a结束的中间由任意个a或b组成的串的集合(2)((|a)b*)*:由0个和多个b组成的串以及由0个或多个以a开头由任意个b组成的实例所组成的串的集合(3)(a|b)*a(a|b)(a|b):由a或b构成的长度至少为3的且倒数第三个字符为a的串的集合(4)a*ba*ba*ba*:由a、b构成的b的个数为3的串的集合习题3.3.5:试写出下列语言的正则定义:(1)包含5个元音的所有小写字母串,这些串中的元音按顺序出现{intw,x,y,z;/*块B1*/{intx,z;/*块B2*/{intw,x;}/*块B3*/}{intw,x;/*块B4*/{inty,z;}/*块B5*/}}}变量作用域声明块#definea(x+1)Intx=2;Voidb(){x=a;printf(“%d\n”,x);}Voidb(){x=1;printf(“%d\n”,a);}Voidmain(){b();c();}:a[bcd]e[fgh]i[jklmn]o[pqrst]u[vwxyz](2)所有由按字典递增排序的小写字母组成的串:a*b*c*d*…z*(3)注释,即/*和*/之间的串,且串中没有不在双引号(")中的*/:[/*]([a-zA-Z]|("*/"))[*/]习题3.4.1:给出识别练习3.3.2中各个正则表达式所描述的语言的状态转换图(1)a(a|b)a(3)(a|b)a(a|b)(a|b)习题3.7.3使用算法3.23和3.20将下列正则表达式转换成DFA(1)(a|b)由(a|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|b)由(a|b)得到相应的NFA如下图所示由上述NFA得到相应的DFA如下1)标记集合A,A是-closure(0),即A={0,1,2,3,4,5}2)可以得到-closure(move(A,a))={0,1,2,3,4,5}=A,-closure(move(A,b))={0,1,2,3,4,5}=A,故该DFA中应只有一个状态A,得到一个一状态的DFA,其状态转换图如下
本文标题:编译原理龙书第二版13章
链接地址:https://www.777doc.com/doc-2141210 .html