简简单单编译原理


     都说编译原理挺难,其实它并不像大家想象中的那么难, It’s so easy!

     总的来说编译原理可以分为以下几个知识点:文法的分类;不确定的有限状态自动机到确定的有限状态自动机的转换;正则表达式。掌握了这三个知识点,编译原理中每个题的道理了,其实编译原理就是这么回事。


下面具体介绍上面说的三个知识点:

1.   文法的分类(乔姆斯基文法)

做一个表格,简单明了的说明,你一下就明白了

文法类型

要求

举例

0型文法(短语文法)

左边至少有一个非终结节点

A->a,Ab->c

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

在0型文法基础上,右边长度不得短于左边的长度

A->a,Ab->ab

2型文法(上下文无关文法)

在1型文法基础上,每一个α→β都有α是非终结符

A->a,B->bc

3型文法(正规文法)

在2型文法的基础上,满足:A→α|αB(右线性文法)或A→α|Bα(左线性文法)

A→α|αB(右线性文法)或A→α|Bα(左线性文法)

 

2.   NFA->DFA转换

过程大致是首先找开始状态,其次确定输入的数据,然后确定输入数据后分别到达什么状态。举一个例子,大家可以去悟其中的道理,将下图中的NFA转换为DFA


转换过程为:

状态集合

输入0到达的状态

输入1到达的状态

初态{S、1、2、3}

{1,3,4,5,Z}

{2,3}

{1,3,4,5,Z}

{1,3,4,5,6,Z}

{空}

{2,3}

{4,5,Z}

{2,3}

{4,5,Z}

{6}

{空}

{1,3,4,5,6,Z}

{1,3,4,5,6,Z}

{5,Z}

{6}

{空}

{5,Z}

{5,Z}

{6}

{空}



3.   正则表达式

掌握下面3个规则就可以了

规则

文法产生式

正规式

规则1

AxBBy

A=xy

规则2

AxA|y

A=x*y

规则3

Ax,Ay

A=x|y



 

 

猜你喜欢

转载自blog.csdn.net/xudepeng0813/article/details/7486075