《编译原理及实践教程》第一章学习笔记

《编译原理及实践教程》第一章学习笔记

课后习题

  1. 解释下列术语。
    答:
    翻译程序:是一种系统程序,它将计算机编程语言编写的程序翻译成另外一种计算机语言的一般来说等价的程序,主要包括编译程序和解释程序,汇编程序也被认为是翻译程序。
    编译程序:也称为编译器,是指把用高级程序设计语言书写的源程序,翻译成等价的机器语言格式目标程序的翻译程序。编译程序属于采用生成性实现途径实现的翻译程序。它以高级程序设计语言书写的源程序作为输入,而以汇编语言或机器语言表示的目标程序作为输出。编译出的目标程序通常还要经历运行阶段,以便在运行程序的支持下运行,加工初始数据,算出所需的计算结果。
    解释程序:是一种语言处理程序,在词法、语法和语义分析方面与编译程序的工作原理基本相同,但在运行用户程序时,它直接执行源程序或源程序的内部形式(中间代码)。因此,解释程序并不产生目标程序,这是它和编译程序的主要区别。
    源程序:也称源代码,是指未编译的按照一定的程序设计语言规范书写的文本文件,是一系列人类可读的计算机语言指令。 在现代程序语言中,源代码可以是以书籍或者磁带的形式出现,但最为常用的格式是文本文件,这种典型格式的目的是为了编译出计算机程序。计算机源代码的最终目的是将人类可读的文本翻译成为计算机可以执行的二进制指令,这种过程叫做编译,通过编译器完成。
    目标程序:又称为“目的程序”,是源程序经编译可直接被计算机运行的机器码集合,在计算机文件上以.obj作扩展名----由语言处理程序(汇编程序,编译程序,解释程序)将源程序处理(汇编,编译,解释)成与之等价的由机器码构成的,计算机能够直接运行的程序,该程序叫目标程序。目标代码尽管已经是机器指令,但是还不能运行,因为目标程序还没有解决函数调用问题,需要将各个目标程序与库函数连接,才能形成完整的可执行程序。
    :把对源程序或其等价的中间表示形式从头到尾扫描并完成规定任务的过程。
    前端:编译前端包括词法分析,语法分析,语义分析和中间代码生成,以及部分代码优化工作,是对源程序进行分析的过程,它主要与源语言有关,与目标机无关,主要根据源语言的定义静态分析源程序的结构,以检查是否符合语言的规定,确定原源程序所表示的对象和规定的操作,并以某种中间形式表示出来。
    后端:编译后端包括部分代码优化和目标代码生成,是对分析过程的综合,与源语言无关,依赖于中国语言和目标机,主要是根据分析的结果构造出目标程序

  2. 高级语言程序有哪两种执行方式?阐述其主要异同点。描述编译方式执行程序的过程。
    答:
    高级语言程序的两种执行方式是:解释方式编译方式
    解释方式:利用解释程序直接读取高级语言程序中的每个语句,翻译并直接执行
    编译方式:利用编译程序将高级语言程序翻译为机器语言程序,然后再运行这个机器语言程序

  3. 在你所使用的C语言编译器中,观察程序1.1经过预处理、编译、汇编、链接四个过程生成的中间结果。
    答:

  4. 编译程序有哪些主要构成成分?各自的主要功能是什么?
    答:
    词法分析器(Scanner,又称扫描器)的功能是读人源程序,进行词法分析,输出单词记号。
    语法分析器(Parser,又称解析器)的功能是对单词记号串进行语法分析,识别出各类语法单位,最终判断输入串是否构成语法上正确的程序。
    语义分析器(Semantic Analyzer)的功能是将各种符号的必要信息填入符号表,并按照
    语义规则对语法分析器识别出的语法单位进行静态语义检查。
    中间代码生成器(Intermediate Code Generator)的功能是将语法分析器识别出的各语法单位翻译成一定形式的中间代码。
    代码优化器(Optimizer)的功能是对生成的中间代码进行优化处理。
    目标代码生成器(Target Code Generator)的功能是把中间代码或优化后的中间代码翻译为目标代码。如果没有优化器,目标代码生成器也可以从识别出的语法单位直接生成目标代码。

  5. 编译程序的构造需要掌握哪些原理和技术?编译程序构造工具的作用是什么?
    答:
    在这里插入图片描述

  6. 复习C语言,其字母表中有哪些符号?有哪些关键字、运算符和界符?标识符、整数和实数的构成规则是怎样的?各种语句和表达式的结构是什么样的?
    答:暂无

  7. 编译技术可应用在哪些领域?
    答:P31-33
    在这里插入图片描述

  8. 你能解释在Java编译器中,输入某个符号后会提示一些单词、某些单词会变为不同的颜色是如何实现的吗?你能解释在Code Blocks中在输入{后,会自动添加},输入do 会自动添加while()是为什么吗?
    答:暂无。

  • 9
    点赞
  • 52
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

FriendshipT

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值