从组成原理到编译原理,都是相互联系的,学习的知识都是在层层推动,顺利成章的,整个软考的全部的知识均可以从计算机的发展(组成原理)--->软件的开发(软件工程)--->软件的算法设计(数据结构)-->高级语言写的系统--->在计算机上识别(编译原理)--->各个系统的背后数据的支持--->(数据库)---->---网络知识的应用---->网络基础……,能够把整个全部的软考的课本给串起来,这些都是构成如今丰富世界的必不可少的条件。算法
固然因为机器语言由0、1组成,难以阅读。因此在机器语言的基础上开发了汇编语言。因为汇编语言仍是很难使用,因此开发出高级语言。如今的高级语言编写的程序、系统都是在汇编语言的编译下由计算机认识翻译执行。数据库
由基本字符(a,b……)构成的符号(单词)书写的规则
核心:单词拼写是否正确网络
由程序语言的基本符号组成程序中的各个语法成分的一组规则
核心:关注的是句子的结构数据结构
按照语法构成的各个语法成分(句子)的含义,关注的句子的含义
核心:静态,在编译时期发现
动态,在运行时期发现
学习
设计语境,适不适合在这里使用。
spa
描述语言的语法结构的形式规则称为文法。(组合成语言的规则)翻译
α→β设计
终结符(a,b,c,…..))和非终结符(A,BC,D,….):htm
终结符具有原子性,不可再分。非终结符,能够再分。开发
非终结符(程序)->终结符(语句)
终结符不能够单独出如今α中;
文法G是一个四元组,可表示为G(VT,VN,S,P)
VT(terminal symbol)是一个非空有限集,每一个元素称为终结符。
VN(nonterminal symbol)是一个非空有限集,每一个元素称为非终结符,它是不能单独在左边的。
S是一个非终结符,称为开始符号;它至少要在一条产生式中做为左部出现。
P是一个产生式集合(有限)。
例:A→a,Aa→a,aA→a
自我理解:左边至少有一个大写字母,右边随意
例:A→a,A→ab,Aa→BAc(左边至少有一个大写字母,且左边的长度小于等于右边的长度)
注意:α→ε也知足1型文法。
自我理解:即产生式右边的字母个数必须大于等于左边的字母个数。
例:A→a,A→ab,A→BAc(在1型文法的前提下,左边必须都是大写字母)
自我理解:即产生式左边必须彻底都是大写字母
自我理解:即全部产生式右边要么没有大写字母,若是有必须所有在小写字母右边或者所有在小写字母左边也就是要保持线性一致
例子1:A→a,A→aB,B→a,B→cB,符合。
判断三型文法的注意事项:
(1)个文法中要么符合左线性,要么符合右线性,两套规则不能同时出如今一个语法中
(2)一个产生式推出的非终结符只能有一个;若是是一个文法中,非终结符要么都在右边的右边,要么都在右边的左边。
NFA 不肯定的有限状态自动机
DFA肯定的有限状态自动机
两者的区别:
我的认为最大的区别在于NFA中有带空的产生式,并且每一个符号能够有不少个产生式,可是DFA每一个符号必须有的产生式个数就是字母表中有几个字母,每一个状态的产生式个数只能是少于或者等于字母表中字母的个数。并且不能有带空的产生式
NDA--->DFA转化(下一遍可你们分享)
① ε是一个正规式,它表示集合L(ε)={ε}。
② 若a是∑上的字符,则a是一个正规式,它所表示的正规集L(a)={a}。
③ 若正规式r和s分别表示正规集L(r)=L(s),则
(a)r|s是正规式,表示集合L(r)∪L(s);
(b)r·s是正规式,表示集合L(r)L(s);
(c)r*是正规式,表示集合(L(r))*;
(d)(r)是正规式,表示集合L(r)。
产生式与正规式的转换:
自我理解:这块结合我们数学上的式子来理解就很好了。
编译的文法,是一种标准,按照标准来的,咱们只需遵循他们的规范标准便可。时间万物都有必定的规律,固然各个语言有它的规范标准,知识间的相互联系,使问题变得简单,变得熟悉,学习起来更加的有兴趣,更具备动力。
接下来常重点考点实例解析和你们分享……