编译原理之路(一)第一章典型习题解答

第一章没啥好讲,就做几道典型题好了……(参考了网上的一些资料,不保证绝对正确)

1.1部分

1.编译器和解释器之间的区别是什么?

编译器解释器
实现机理将程序翻译成一种能够被计算机执行的形式利用用户提供的输入执行源程序中指定的操作
实现路径源程序->编译器->目标程序源程序+输入)->解释器->输出
特点读取整个程序,再翻译逐字逐句执行

2.编译器相对于解释器的优点是什么?

编译器编译一个程序往往更快
解释器由于逐字逐句执行,所以错误诊断效果往往更好

3.在一个语言处理系统中,编译器产生汇编语言而不是机器语言的好处是什么?

汇编语言好处:容易输出和调试

如果高级语言出错,没有汇编语言,你将不知道哪一个变量到哪一个寄存器,哪一个栈溢出……,除非你能看懂机器语言

4.把一种高级语言翻译成为另一种高级语言称为源到源的翻译器,编译器使用C语言作为目标语言有什么好处?

C语言是最接近汇编语言的高级语言,可以很方便的控制包括寄存器在内的几乎所有硬件,所以选他作为目标语言

1.6部分

1.指出赋给w,x,y,z的值

int w, x, y, z;
int i = 4; int j = 5;
{
  int j = 7;  //重新声明,这是局部j
  i = 6;     //没有重新声明,这个i就是全局的i
  w = i + j;    // 6+7
}
x = i + j;   //6+5
{
  int i = 8; //局部i
  y = i + j; //8+5
}
z = i + j;    //6+5

答案:解析在代码中
w :13
x :11
y :13
z :11

3.给出声明的作用域

在这里插入图片描述

4下面C代码打印的结果是什么?

打印结果:3,2
b()中,x=x+1=2+1=3
c()中,a=x+1=1+1=2

3.1部分

1.C++程序哪些词素应该有相关联的词法值

<float> <id,"limitedSquare"> <(> <id,"x"> <)> <{> 
<float> <id,"x"> <;>
<return> <(> <id,x> <<=> <num,10.0> <||> <id,x> <>=> <num,10.0> 
<?> <num,100> <:> <id,"x"> <*> <id,"x"> <;>
<}>

2.HTML程序哪些词素应该具有相关联的词法值

<text,"Here is a photo of"><nodestart,b><text,"myHouse"><nodeend,b>
    <nodestart,p>
        <selfendnode,img><selfendnode,br>
        <text,"See">
        <nodestart,a>
               <text,"MorePictures">
        <nodeend,a>
        <text,"if you liked that one.">
    <endstart,p>

3.3部分

2.描述正则表达式的语言

a(a|b)*a以a做开头和结尾,中间可以有任意个a或者b的串
(( ϵ \epsilon ϵ|a)b*)*任意个a或b组成的串
(a|b)*a(a|b)(a|b)倒数第三个字符为a的任意个a或b组成的串
a*ba*ba*ba*包含3个b的任意个a组成的串
(aa|bb)*((ab|ba)(aa|bb)*(ab|ba)(aa|bb)* )*由2m个a和2n个b组成的串m>=0,n>=0

5.写出下列语言的正则定义(1-3,8-9)

1 want -> other* a (other|a)* e (other|e)* i (other|i)* o (other|o)* u (other|u)*
  other -> [bcdfghjklmnpqrstvwxyz]
2 a*b*……z*  
3 \/\*([^*"]*|".*"|\*+[^/])*\*\/ 
8 b*(a+b?)*
9 b* | b*a+ | b*a+ba*

其中第3题前后的\是转义字符,容易理解,中间部分解释如下
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值