当前位置: 首页 > news >正文

【编译原理】绪论(基础知识+习题)

🌈 个人主页:十二月的猫-CSDN博客
🔥 系列专栏: 🏀软件开发必备知识_十二月的猫的博客-CSDN博客

💪🏻 十二月的寒冬阻挡不了春天的脚步,十二点的黑夜遮蔽不住黎明的曙光 

目录

1. 基础知识

1.1 编译器与翻译器

1.2 编译程序的组成

1.3 词法分析过程

1.4 语法分析过程

1.5 其他几个过程

2. 习题 

3. 总结


1. 基础知识

1.1 编译器与翻译器

翻译:等价语言之间的转化

编译:等价、高级向低级语言之间的转化

编译程序是翻译程序的一种

解释程序:高级语言除了先编译后执行,有时也可以“解释”执行。一个源语言的解释程序以该语言写的源程序作为输入,但不产生目标程序,而是边解释边执行源程序本身。

诊断编译程序:专门用于帮助程序开发和调试的编译程序。

优化编译程序:着重于提高目标代码效率的编译程序。

交叉编译程序:产生不同于其宿主机的机器代码的编译程序。

可变目标编译程序:不需要重写编译程序中与机器无关的部分就能改变目标机的编译程序。

1.2 编译程序的组成

编译程序划分为前端和后端:前端由与源语言有关但与目标机无关的部分组成,后端包括与目标机中有关的部分。

集成化的程序设计环境:将相互独立的程序设计工具集成起来,以便为程序员提供完整的、一体化的支持,从而进一步提高程序开发效率,改善程序质量。

符号表:登记源程序中出现的每个名字以及名字的各种属性

1.3 词法分析过程

词法分析阶段:读入源程序,对构成源程序的字符流进行扫描和分解,生成符号序列。

1.4 语法分析过程

语法分析阶段:机器通过语法分析,将符号序列分解成不同的语法短语,确定整个输入串能够构成语法上正确的程序。这里会利用到语法树、文法、正则定义等概念。最后生成语法树

1.5 其他几个过程

语义分析阶段:检查源程序上有没有语义错误,在代码生成阶段收集类型信息

中间代码生成阶段:在进行了上述的语法分析和语义分析阶段的工作之后,有的编译程序将源程序变成一种内部表示形式

代码优化:这一阶段的任务是对前一阶段产生的中间代码进行变换或进行改造,目的是使生成的目标代码更为高效,即省时间和省空间

目标代码生成:这一阶段的任务是把中间代码变换成特定机器上的绝对指令代码或可重定位的指令代码或汇编指令代码

前三个阶段称为前端:完成对源程序的分析
后三个阶段称为后端:完成对源程序的综合处理

2. 习题 

  1. 编译是对( )。

      A. 机器语言的执行

      B. 汇编语言的翻译

      C. 高级语言的翻译

      D. 高级语言程序的解释执行

  2. 用高级语言编写的程序经编译后产生的程序叫( )。

      A. 源程序

      B. 目标程序

      C. 连接程序

      D. 解释程序

  3. ( )不是编译程序的组成部分。

      A. 词法分析程序

      B. 代码生成程序

      C. 设备管理程序

      D. 语法分析程序

  4. 源程序是句子的集合,( )可以较好地反映句子的结构。

      A. 线性表

      B.

      C. 完全图

      D. 堆栈

  5. 编译程序是一种( )。

      A. 汇编程序

      B. 翻译程序

      C. 解释程序

      D. 目标程序

  6. 按逻辑上划分,编译程序第三步工作是( )。

      A. 语义分析

      B. 词法分析

      C. 语法分析

      D. 代码生成

  7. 编译程序中语法分析器接收以( )为单位的输入。

      A. 单词

      B. 表达式

      C. 产生式

      D. 句子

  8. 编译过程中,语法分析器的任务就是( )。

      A. 分析单词是怎样构成的

      B. 分析单词串是如何构成语句和声明的

      C. 分析语句和声明是如何构成程序的

      D. 分析程序的结构

  9. 语法分析时所依据的是( )。

      A. 语法规则

      B. 词法规则

      C. 语义规则

      D. 等价变换规则

  10. 通常一个编译程序中,不仅包含词法分析,语法分析,语义分析,中间代码生成,代码优化,目标代码生成等六个部分,还应包括( )。

      A. 表格处理和出错处理

      B. 解释器

      C. 模拟执行器

      D. 符号执行器

  11. 编译程序绝大多数时间花在( )。

      A. 词法分析

      B. 目标代码生成

      C. 出错处理

      D. 表格管理

3. 总结

本文到这里就结束啦~~
如果觉得对你有帮助,辛苦友友点个赞哦~


http://www.mrgr.cn/news/48425.html

相关文章:

  • 利用session机制造测试账号,无需前端也可以测试后端接口
  • JavaScript Set 必备指南:深入理解 Set 的特性和方法
  • -bash gcc command not found解决方案(CentOS操作系统)
  • 探索 Python 的函数与模块
  • 从丢失到找回只需一步:2024年TOP4超级硬盘恢复软件推荐
  • 【论文速读】| AutoSafeCoder:通过静态分析和模糊测试保障LLM代码生成安全的多智能体框架
  • GWAS揭示酸性磷酸酶ACP2在缺磷条件下通过丝氨酸代谢调节水稻光合作用
  • 基于STM32的太阳跟踪系统设计
  • 如何减少 Webpack 的打包体积
  • 豆包MarsCode:AI编码助手,注册即享多重好礼!
  • 手表手机蓝牙通信实测可用!!!
  • 【AIGC】ChatGPT提示词Prompt高效编写模式:思维链、Self-Consistency CoT与Zero-Shot CoT
  • 单片机(学习)2024.10.11
  • 绿色激光器定制主要标准有哪些
  • 设计模式——原型模式(4)
  • 使用机器学习边缘设备的快速目标检测
  • 安科瑞智能电表:先充值,后用电
  • Java项目:150 基于SSM+JSP的服装商城系统
  • 个人博客系统测试报告
  • 向日葵macOS定制包功能上线 轻松定制企业主被控软件