针对期末考试的……有问题欢迎指出,毕竟我的水平连及格都难
文章目录
知识点
- 编译各阶段功能,以及自展和移植的概念。
- 语法树,短语,句柄,简单短语……
- 正规表达式,先消除左递归、提取左因子,然后构造成NFA、DFA、最简DFA的全过程。
- 构造文法的预测分析表、算符优先分析表、LR(0)项目集族、SLR分析表、LR(1)项目集族、规范LR(1)分析表的过程。
- 将语句翻译成三地址代码的方法。
可能考的概念题
-
编译的过程 词法分析-语法分析-语义分析及中间代码生成-中间代码优化-目标代码生成
-
编译程序
能够把某一种语言程序(称为源语言程序)转换成另一种语言程序(称为目标程序),而后者与前者在逻辑上等价,这种程序称为编译程序。 -
词法分析的任务
输入源程序,对构成程序的字符串进行扫描和分解,识别出一个个的单词符号。 把需要存放的单词放到符号表中,如变量名,标号,常量等。 -
单词符号
构成语言的最小单元。如基本字 if,标识符,常数123,算符 +和界符 ; -
词法单元
由一个词法单元名和一个可选的属性值组成。词法单元名是一个表示某种词法单位的抽象符号,比如一个特定的关键字,或者代表一个标识符的输入字符序列。词法单元名字是由语法分析器处理的输入符号。 -
模式:描述了一个词法单元的词素可能具有的形式。
-
词素: 源程序中的一个字符序列,它和某个词法单元的模式匹配,并被词法分析器识别为该词法单元的一个实例。
-
语法分析的任务
在词法分析的基础上,根据语言的语法规则,把单词符号串分解成各类语法单位。 -
中间代码
是一种含义明确、便于处理的记号系统,并独立于硬件系统。 -
优化的主要方面有:公共子表达式的提取、循环优化、删除无用代码等等
应用题
词法分析
自动机与正则表达式的转换
解题步骤
DFA转正则表达式
将状态按 1、2、…、n 的顺序依次标号
先求任意状态 i 到 j(i 可以等于 j,即自身到自身),不经过其它状态的路径对应的正则表达式
求状态 i 到 j,最高只经过状态 1 的路径对应的正则表达式
求状态 i 到 j,最高只经过状态 2 的路径对应的正则表达式
依此类推……
求状态 i 到 j,最高只经过状态 n 的路径对应的正则表达式,即经过所有状态的路径对应的正则表达式
正则表达式转自动机
了解基本的转换公式就可以画出来
例题
例题一
构造与下述自动机等价的正则表达式
分解情况,这个比较简单,直接看也能看出来。如果遇上复杂的,就把复杂的部分单独列出来看然后再合在一起。
ab*a(ba)*
例题二
a(b|c)*转成NFA 简书截图
例题二
r=(a|b)*abb