编译原理的软考考点如下:
- 文法
- 有穷自动机
- 语法推导树
- 算符优先
本篇文章主要是对这几部分内容进行一下整理
文法
1、基本概念
文法是由一个四元组组成的,下面是总结好的一些基础知识
这些基本的概念是需要牢记的,最起码的要知道四元组中每个符号都是什么意思,也是学习下面的一个基础
2、三种文法介绍
对于三种文法的介绍,我是以思维导图的形式总结出来的,如下所示:
其实对于这三种文法的关系,看起来复杂,总结到一起也就是简单集合包含关系,四种文法就像是四个蛋,而他们的关系就是分别为各自的蛋黄
记住这张图,以及四种文法的基本概念,我想也就学会了吧,做题的时候想着四者的关系,那么也就不容易出错了 对于文法的介绍就到这里,想要理解的更好其实我觉着还是要多看一些例子,才能更加深你对这些概念的理解
有穷自动机
这部分只介绍了NFA 和DFA 以及他们之间的转换
NFA 不确定的有穷状态自动机
DFA确定的有穷状态自动机
二者的相同点: 都是五元组 (S ∑ f,s Z) S 有限的状态集合 ∑ 字母表 f 产生式 s 开始符号 Z终结符 ( 终态)
二者的区别: 个人认为最大的区别在于NFA 中有带空的产生式,而且每个符号可以有很多个产生式,但是DFA 每个符号必须有的产生式个数就是字母表中有几个字母,每个状态的产生式个数只能是少于或者等于字母表中字母的个数 。而且不能有带空的产生式
因此两者之间是可以转换的,也就是说把带空的NFA 转换成为DFA
具体的转换过程我就不在这里写出来了,百度上任意查找一个例子都可以
在两者之间的转换中 还存在下面的三种情况
掌握了这三种基础的转换文法, 在加上小例子的帮助,做题就会顺手了
语法推导树
一些知识如下,个人的理解就是构造一棵树,来表示一个短语的形成过程
上述语法树中,叶子节点组成的短语,也就是我们所要构造的那个短语
算法优先
这部分知识 主要掌握4部分,
1,基础概念:
2 两个方法
4 三种关系
4 算符优先表
以上就是关于编译原理的一些内容,总结起来不是很多,但是需要学习的其实挺多的,了解了基本的概念剩下的也就是练习了,通过练习,才能深刻的理解这些含义!
如有不足之处,欢迎交流!