美文网首页程序员成长计划程序员程序员技术栈
编译原理期末复习考点总结(一) 通俗易懂的方式解释概念(纯手打)

编译原理期末复习考点总结(一) 通俗易懂的方式解释概念(纯手打)

作者: CooperNiu | 来源:发表于2017-12-29 16:16 被阅读69次

编译原理总结

基础概念

  1. 编译程序是什么?
    能把源语言程序转换成目标语言程序的程序。

  2. 编译要经过哪些步骤?

    • 词法分析:

      • 扫描源程序,将其分解为词法单元后输出。
      • 方法:正规式,有限自动机。
    • 语法分析:

      • 根据语法规则,对词法单元进行推导或规约,识别出各类语法单元,最终判断输入串语法是否正确。
      • 方法:上下文无关文法。
    • 语义分析与中间代码生成:
      使用语法树和符号表对语法单元进行语义分析并把他们翻译成一定形式的中间代码。
      方法:等价变换。

    • 优化:
      对中间代码进行优化处理。

    • 目标代码生成:
      把中间代码翻译成目标程序。


  3. 对源程序或中间结果从头到尾扫描一次,并做加工处理,生成新的中间结果或目标程序的过程。

  4. 前端
    与源语言有关而与目标机器无关的部分。

  5. 后端
    与源语言无关而与目标机器有关的部分。

  6. 文法
    描述语言的语法结构的形式规则

  7. 语法树
    用来描述句型推导的一棵树

  8. 上下文无关文法
    所定义的语法单位与上下文(环境)无关。

    包括:
    - 终结符:
    直观的是语法树的叶子结点、句子中的单词或字。
    例如:He,give,a,b……
    - 非终结符:
    语法树的分支结点、句子中的语法成分。
    例如:<冠词>,A,B……
    - 开始符号:
    语法树的根结点、句子。
    例如:<句子>,S……
    - 产生式:
    由一种高级的语法成分推出低级的若干语法成分的式子。
    例如:<间接宾语> -> <冠词><名词>,S—>A|B……

  9. 语法定义语言
    从文法规则的开始符号出发,反复使用产生式,对非终结符进行替换或展开,最终得到的就是一种语言。

    通俗来说,一般的句子结构可以是“主语+谓语+宾语”,然后我们用产生式来替换,主语->代词—>He,谓语->动词->plays,宾语->名词->piano。这样我们就推出一句话。

    如果这样一直重复,就可以把这种语法规则可以表示的所有语句推导出来,即一种语言。

  10. 最左推导
    如果我们对于9中提到的产生式,每次推导都是先替换最左边的非终结符,那就是一种最左推导。

  11. 最右推导
    如果我们对于9中提到的产生式,每次推导都是先替换最右边的非终结符,那就是一种最左推导。

  12. 二义文法
    因为我们对于9中提到的产生式,可以通过最左推导和最右推导分别推导出一样的句子,所以这种文法就是二义文法。

    在程序设计语言中,只有确定化的代码才可以被机器按部就班执行,否则,每次机器运行结果就一定会不同。所以,程序设计语言的文法不可以是二义文法。

  13. 思考:为什么9中提到的文法会有二义性?
    因为9中的文法未规定替换的优先级和结合方式。

  14. 形式语言
    0型文法(短语文法)递归可枚举

    1型文法(上下文有关文法)

    2型文法(上下文无关文法)对应非确定的下推自动机

    3型文法(正规文法)

相关文章

  • 编译原理期末复习考点总结(一) 通俗易懂的方式解释概念(纯手打)

    编译原理总结 基础概念 编译程序是什么?能把源语言程序转换成目标语言程序的程序。 编译要经过哪些步骤?词法分析:扫...

  • 七八年级期末高效复习

    七八年级期末如何高效复习 一定要研究近三年期末语文试卷,明确考点,认真完成,看看自己能拿多少分。总结期末...

  • 白马,黑马,骑手究竟是如何工作的?

    今天复习了执行力以及相关的原理概念,但老师对骑手,白马,黑马系统的工作方式的阐述有所取舍,并没有完整的解释...

  • 编译原理复习

    文法 推导与规约 最左推导:每次替换都替换最左边的非终结符最右推导:每次推导都替换最右边的非终结符 句型与句子 文...

  • 编译原理

    编译原理 标签(空格分隔): 编译原理 编译和解释 编译 整个程序全部翻译结束之后,程序才能开始运行;编译和运行是...

  • 备考复习应注重反馈与反思

    每逢备考复习的过程中,首轮复习大多都注重相关概念及知识点、考点的复习,记熟、记清相关的知识点考点是非常必要...

  • #编译原理打卡01

    今天是编译原理的第一次课,讲了第一章,第一章比较简单,考点很简单: 1.翻译程序 翻译分为两种:编译程序和解释程序...

  • 如何有效地进行期末复习?

    一、为什么要进行期末复习? 对于学生来说,期末复习可以帮助孩子更好地把握住考试的考点及重难点;对已学知识进行巩固强...

  • JavaScript编译原理与内存管理

    编译原理 编译还是解释? 编程语言分为编译型语言和解释型语言两种,编译型语言的源代码在执行之前要进行完全编译,例如...

  • 01|期末复习中的经济学原理

    期末复习,观察一些现象,试着用经济学基本原理解释一下。 1.人们面临权衡取舍(People face trade-...

网友评论

    本文标题:编译原理期末复习考点总结(一) 通俗易懂的方式解释概念(纯手打)

    本文链接:https://www.haomeiwen.com/subject/ikzigxtx.html