编译原理与技术-知识点整理(自用)
概念:把源程序转换成等价的目标程序,这个过程就是所谓的编译。编译程序是现代计算机系统的基本组成部分之一。
编译原理考试版-混子速成期末保过:https://www.bilibili.com/video/BV1ft4y1X7p6?p=1 (小姐姐声音也可好听,哈哈)不想看的可以直接看视频(纯题目讲解)
第一章 编译概述
1.1翻译程序:
编译程序
- 汇编程序:汇编语言->机器语言
- 编译程序:高级语言->汇编语言|机器语言
解释程序
- 解释程序是一个一个的获取、分析并执行源程序语句,一旦一个语句分析完成,解释程序便开始运行并生成结果。语言程序的调试就可以用解释器来实现
1.2编译的阶段和任务:
- 分析阶段(词法分析、语法分析、语义分析)
- 综合阶段(中间代码生成、代码优化、代码生成)
1.3编译有关的其他概念
- 前端:主要由与元语言有关而与目标机器无关的那些部分组成,通常包括词法分析、语法分析、语义分析和中间代码生成、符号表的建立,以及机器无关的代码优化工作,还包括相应的错误处理工作和符号表操作。
- 后端:由编译程序中与目标机器有关的部分组成,一般来讲,这些部分与源语言无关而仅仅依赖于中间语言,包括目标代码的生成、与机器有关的代码优化,以及相应的错误处理和符号表操作。
- “遍”的概念:一“遍”是指对源程序或其中间表示形式从头到尾扫描一遍,并做相关的加工处理,生成新的中间表示形式或目标程序。每一遍完成一个或相连几个逻辑部分的工作。eg:第一遍进行词法分析,第二遍进行语法分析,第三遍进行语义分析诸如此类。
预处理器/汇编程序:略。
第二章 形式语言语言与自动机基础
2.1 字母表和符号串
- 字母表:符号的非空有限集合。典型的符号是字母、数字、各种标点和运算符等。eg:{0,1}是二进制数的字母表,计算机使用的字母表常见的由ASCII字符集和EBCDIC字符集。
- 符号串:定义在某一字母表上的符号串是由该字母表中的符号组成的有限符号序列。eg:010011、0101等是字母表{0,1}上的符号串。aa、ab、abababab等是定义在字母表{a,b}上的符号串。
- 符号串长度:串中出现符号的个数。
2.2 语言
- 语言定义:在某一确定字母表上的符号串的集合。----语言也可以进行运算。eg:并、交、闭包运算等。
2.3 文法
- 文法定义:文法就是描述语言的语法结构的形式规则。任何一个文法都可以表示为一个四元组G=(,,S,)
- 是一个非空有限集合,每个元素称为终结符号。