我讲正规式——软考系列之编译原理

      编译原理这一章包括的主要内容为:文法,正规式,自动机,语法推导树和算符优先这几部分内容!其中我给大家讲解的正规式!同样是学习,听别人讲和给别人讲完全是两种不同的收获!

     下面是自己讲解的正规式以及自己总结出的做正规式 题的规律:       

       

正规式

1正规式是描述程序语言单词的表达式,对于字母,其上的正规式及其表示的正规集可以递归定义如下。

ε是一个正规式,它表示集合L(ε)={ε}

a上的字符,则a是一个正则式,它所表示的正规集L(a)={a}

若正规式rs分别表示正规集L(r)=L(s),则

ar|s是正规式,表示集合L(r)∪L(s)

br·s是正规式,表示集合L(r)L(s)

cr*是正规式,表示集合(L(r))*

d(r)是正规式,表示集合L(r)

仅由有限次地使用上述三个步骤定义的表达式才是上的正规式。

运算符“|”“·”“*”分别称为连接闭包。在正规式的书写中,连接运算符“·”可省略。运算符的优先级从高到低顺序排列为:“*”“·”“|”

若两个正规式表示的正规集相同,则认为二者等价。两个等价的正规集UV记作U=V

例如:b(a)*=(ba)*b这个式子是百科里面的内容,是错的。(a|b)*=(a*b*)*

 

2正规式和正规文法之间转换规则

 

3通过例题展示来讲解如何学习正规式:

4通过例题讲解总结正规式的规则

 

对例题讲解:

 

选项1特点:结尾一定为b,左面有若干个a或者若干个ab,同时这若干个a和若干个ab可以交替出现,同时一定有一个a的存在!

选项2特点:结尾一定是b,左面是(a|b)*,即左面有若干个a或者若干个b,同时ab可以交替出现,无其他条件限制!

选项3特点:以b结尾,左面是((a|b)*|aa)*,含盖了2,如果不看或后面的部分2,3已经相等了,同时或代表可以出现或者不出现,所以是必要条件,所以2,3一定相等!(此为视频讲解)

从另外一个角度看,或后面的aa元素在前面(a|b)*中都涵盖了,所以是否在后面写aa对最后结果无所谓!

 

总结规律:此类题就是通过分析式子的特点(主要抓住包含什么,排列次序,和一定含有什么在什么位置)来找到答案。

 

5通过讲解这一小部分的内容自己的收获:

给别人讲题自己首先要有负责的态度,有了这个前提,自己也会认真思考,同时也可以展现给别人!这个自己平时学习一个提醒:要时刻对自己负责!

给别人展现,还要考虑如何安排才更容易让人听明白!给自己的提示:平时自己的学习内容也应该有个合理的次序,这样才更容易深入!

 

你可能感兴趣的:(软考复习)