文章目录

  • 编译原理期末复习纲要
    • 一、选判填
    • 二、简答题
    • 二、大题

编译原理期末复习纲要

仅供自己观看

一、选判填

  1. 单选:5*1=5'
  2. 判断:5*1'=5'
  3. 填空:5*2'=10'

合计:20'

二、简答题

12选4,4*5'=20'

  1. 什么是编译程序?

    编译程序是现代计算机系统的基本组成部件之一。从功能上看,一个编译程序就是一个语言翻译程序,能够将一种高级语言翻译成目标语言,通目标语言常是汇编语言或者机器语言这样的低级语言。

  2. 编译有哪几个过程?

    词法分析、语法分析、语义分析、中间代码生成、代码优化和目标代码生成共6个过程。

  3. 编译和解释的区别?

    两者主要是工作模式上的区别。编译是将源程序代码转换成目标代码,通常目标代码是汇编代码,然后需要将目标代码进一步转换成计算机能够识别的二进制代码,机器才能运行;解释是直接对源程序一行一行的执行,能直接得到运行结果而不生成目标代码。其次就是两者的运行效率不同,一般而言,编译的程序要比解释的程序效率高。

  4. 什么是文法的二义性?

    一个文法存在某个句子对应两个不同的语法树,或者说一个文法中存在某个句子,它有两个不同的最左(或最右)推导

  5. 什么是有限自动机?

    有限自动机是一种识别装置,能准确地识别 正规集

  6. 简述词法分析器的作用

    • 从字符流的源程序中识别单词
    • 滤掉源程序中注释或空白
    • 记录新读入的字符行的行号
  7. 常见的语法分析方法有哪些?

    常见的有自顶向下分析自底向上分析两种方法。

  8. 简述语法分析器的作用

    确定是否可以以及如何从语法的起始符号推导出输入符号串

    总结起来就是两点:

    • 识别并检查来自词法分析器的单词符号串
    • 构建由输入单词符号串组成的数据结构
  9. 什么是LL(1)文法分析器?

    LL(1)文法分析器是能够判断由词法分析给出的单词符号串是否符合LL(1)文法规则的程序。常用的实现方法由:递归下降表驱动

  10. 什么是LR(0)文法分析器?

    LR(0)文法分析器就是一个由总控程序分析表(或分析函数)和分析栈组成,能够从词法分析器中取得词法单元序列,并且确认该序列是否可由LR(0)文法生成的程序。

    简而言之:能用LR(0)分析表的 分析器 称为LR(0)分析器。

  11. 什么是语法制导翻译?

    书上的说法:是编译程序实现的一种方法,即由语法分析程序的分析过程来主导语义分析以及翻译的过程。

    百度上的说法:语法制导翻译是指一种源语言代码的翻译完全由语法分析器驱动的编译器的实现方法。

  12. 常见的代码优化方法有哪些

    • 窥孔优化
    • 局部优化
    • 循环优化
    • 全局优化

二、大题

4*15'=60'

  • 将NFA确定化和最小化

    细讲如何对NFA进行确定化和最小化

  • LL(1)文法相关问题

    1. 判断一个文法是否是LL(1)文法

      细讲如何判断文法是否是LL(1)文法

    2. 构造预测分析表

      Step1:计算出SELECT集合(SELECT集合求解可以参考文章:细讲如何判断文法是否是LL(1)文法)

      Step2:画一张预测分析表,行为非终结符,列为终结符

      Step3:通过SELECT集合将相应非终结符的产生式填入相应的终结符的那一列

      例如:存在如下SLECT集合表

      产生式 SELECT集合
      E → TE’ ( , id
      E’ → +TE’ +
      E’ → ε #,)
      T → FT’ (,id
      T’ → *FT’ *
      T’ → ε #,),+
      F → id id
      F → (E)

      预测分析表如下所示:

      id + * ( ) #
      E
      E’
      T
      T’
      F

      ① E → T E ’ E → TE’ E→TE’能够得到得到SELECT集合 { ( , i d } \{( , id\} {(,id},故在( 和id下面写入产生式 E → T E ’ E → TE’ E→TE’,通常为了简化表,产生式左部会省略

      ② E ’ → + T E ’ E’ → +TE’ E’→+TE’能够得到SELECT集合 + + +,故在+的那一列写入 → + T E ’ → +TE’ →+TE’,同时 S E L E C T ( E ’ → ε ) = { # , ) } SELECT(E’→ε)=\{\#,)\} SELECT(E’→ε)={#,)},所以要在#和ε这两列写入产生式 → + T E ’ → +TE’ →+TE’

      ③、④、⑤同理可得

      填完后的预测分析表为:

      id + * ( ) #
      E → T E ’ → TE’ →TE’ → T E ’ → TE’ →TE’
      E’ → + T E ’ → +TE’ →+TE’ → ε → ε →ε → ε → ε →ε
      T → F T ′ → FT' →FT′ → F T ′ → FT' →FT′
      T’ → ε → ε →ε → ∗ F T ′ → *FT' →∗FT′ → ε → ε →ε → ε → ε →ε
      F → i d → id →id → ( E ) → (E) →(E)
  • LR分析相关问题

    1. 判断一个文法是SLR(1)还是LR(0)文法

    2. 构造识别活前缀的DFA

    3. 构造文法分析表

编译原理期末复习重点相关推荐

  1. 编译原理期末复习笔记

    编译原理这门课通过证明是可以速成的. 我说的"速成"是平时还要支棱一只耳朵听课哦. 其实后面几次课听了之后仿佛掌握到了其中精髓. 还有就是这门课复习起来很爽,因为复习过程可以感悟到 ...

  2. 编译原理期末复习—第一章概论

    后续会更新编译原理其他章节(有问题请指正) 文章目录 前言 一.程序设计语言的发展 1.机器语言 2.汇编语言 3.程序设计语言 二.基本术语解释 前言 参考了<编译原理>王生原,张素琴等 ...

  3. 哈工大编译原理期末复习(完整版)

    文章目录 本文PDF下载 一.绪论 1.1 什么是编译 1.2 编译系统的结构 1.3 编译程序的生成 1.4 为什么要学习编译原理 1.5 编译技术的应用 二.语言及其文法 2.1 基本概念 2.2 ...

  4. 编译原理期末复习资料

    Chomsky把文法分为几种类型?什么是文法的二义性? 乔姆斯基把文法法分成四种类型,即0型.1型.2型和3型.这几种文法类型的概念一定要掌握,是一个非常重要的考点.对于这几种文法,一般书上都只有简单 ...

  5. [编译原理] 期末复习,求FIRST集和FOLLOW集。简单易懂,例题讲解。

    1.终结符和非终结符 终结符:ε.a.b.c.d.+.-.*./.,等非大写字母 非终结符:A.B.C.D.S.- 大写字母. 2.求first集 核心理念:first(A) A能推出的第一个是什么. ...

  6. 计算机文化基础的重点,计算机文化基础期末复习重点.doc

    计算机文化基础期末复习重点 计算机文化基础复习重点~~大家自己打印下来,常看看~~ 来源: HYPERLINK "/GetEntry.do?id=702112705&owner=34 ...

  7. 计算机科学与技术第二章ppt,计算机科学与技术-编译原理-第二章重点.ppt

    计算机科学与技术-编译原理-第二章重点.ppt * 自下而上分析法举例 例2解: a b b c d e (1) a b b c d e A A (2) a b b c d e A A (3) a b ...

  8. 金融学期末复习重点准备

    金融学期末复习重点准备 前言 记一下金融学期末复习重点准备. 主要是把重点点到,刨去了铺垫和逻辑. 我好像想明白为什么我写<<管理学>期末第一次复习>的时候总感觉怪怪的. 我应 ...

  9. 数据库系统原理期末复习

    数据库系统原理期末复习 这是本人整理的数据库系统原理的复习资料,按照四个课程目标所划的知识点进行复习,时间充裕的同学可对照文末各章复习知识点查漏补缺. 一.课程目标1:数据库基础知识应用 20分 数据 ...

最新文章

  1. Nacos真香,从零到一学起来
  2. python多线程_【python多线程02】各种线程锁
  3. 【Python】利用 pytesseract 识别图片中的数字
  4. tomcat(supplement)HttpConnector.initialize() 和 start() 方法 以及 StandardContext.start()方法的分析
  5. 每日一题(48)—— 中断
  6. 基于蓝墨云平台的计算机教学,基于蓝墨云班课的中职计算机“分层教学”模式探究...
  7. java删除csv一行_在Java中读取CSV文件时跳过第一行
  8. 抖音张一鸣:我的大学四年收获及工作感悟
  9. 我错了——虚拟光驱 for linux
  10. 【手写数字识别】基于matlab GUI BP神经网络手写数字识别【含Matlab源码 868期】
  11. 计算机开机界面图片怎么修改,电脑win7系统怎么修改开机画面的方法
  12. 压力测试工具Jmeter使用详解
  13. 2020年最值得推荐的10款数据可视化工具,看完我收藏了
  14. EverEdit逆向 PE结构
  15. CSS解决hover选择器生硬效果
  16. DBeaver设置Maven镜像仓库
  17. LOJ 3090 「BJOI2019」勘破神机——斯特林数+递推式求通项+扩域
  18. 简单的了解一下MVC
  19. 项目经理常用软件大全
  20. 统计二叉树度为0、1、2的结点

热门文章

  1. C#学习——序列化和反序列化练习的重构
  2. 个人认为生活中有用的格言——牢记
  3. 怎样解决KeyShot中的黑屏问题
  4. sobel边缘检测python_python实现:prewitt, laplace,sobel,scharr, canny, hed
  5. python笔记系列:IP地址处理模块IPy
  6. SpringBoot系列(四十二):配置Undertow容器|超级详细,建议收藏
  7. 问 0x7FFFFFFF+0x7FFFFFFF 是多少
  8. springboot+mysql高校应届生就业管理系统-计算机毕业设计源码40613
  9. docker无法删除资源:设备忙
  10. python求解两个list列表的交集