软件评测师考点——正规式的基础知识

正规式的基础知识是软件评测师考试的重要考点,经常出现在上午场的客观选择题当中。正规式是在编译程序词法分析时用于描述词法规则的表达式,它产生的集合是语言基本字符集∑(字母表)上的字符串的一个子集,称为正规集。下面就该知识点并结合例题进行总结学习。

一、正规式的定义

对于字母表∑,其上的正规式及其表示的正规集可以递归定义如下。

(1)ε是一个正规式,它表示集合L(ε)= {ε}。注意:ε表示为空,{ε}表示空集。

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

(3)若正规式r和s分别表示正规集L(r)和L(s), 则:

①r|s是正规式,表示集合L(r)UL(s)。

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

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

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

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

运算符“|”、“·”、“*”分别称为“或”“连接”和“闭包”。运算符“|”表示“或”、并集;运算符“·”表示两个集合元素的连接;运算符“*”表示*之前括号里的内容出现0次或多次。在正规式的书写中,连接运算符“·”可省略。运算符的优先级从高到低顺序排列为“*”、“·”、“|”。

二、疑难字符解析

(1)字母表∑:元素的非空有穷集合。例如,∑={a, b}。

(2)字符:字母表∑中的一个元素。例如,∑上的a或b。

(3)字符串:字母表∑中字符组成的有穷序列。例如,a、ab、aaa 都是∑上的字符串。

(4)字符串的长度:字符串中的字符个数。例如,|aba|=3。

(5)空串ε:由0个字符组成的序列。例如,|ε|=0。

(6)连接:字符串S和T的连接是指将串T接续在串S之后,表示为S·T,连接符号“·可省略。显然,对于字母表∑上的任意字符串S,S·ε=ε·S=S。

(7)∑*:指包括空串ε在内的∑上所有字符串的集合。例如,设∑={a,b}, ∑*={ε,a,b,aa,bb,ab,ba,aaa,……}。

(8)字符串集合的运算:设A、B代表字母表∑上的两个字符串集合。

①或(合并):AUB={a|a∈A或a∈B};

②积(连接):AB={ab|a∈A且b∈B}。

三、常见的正规式和对应的正规集

设∑={a,b},在下表中列出了∑上的一些正规式和相应的正规集。

下面是近几年对该知识点考察过的真题,以后仍是考试出题的重点,大家要重视起来。

【2017年第17题】表示"以字符a开头且仅由字符a、b构成的所有字符串"的正规式为(  )

A、a*b*

B、(alb)*a

C、a(alb)*

D、(ab)*

解析:本题考查正规式的基础知识。

选项A:a*b*={a}*{b}* 表示由若干个a后跟若干个b所组成的任何长度的字符串,此时需要注意的是若干个是可以是0个的;

选项B:(alb)*a ={a,b}*{a}表示以a结尾,前面有若干个a或b组成的字符串;

选项C:a(alb)*={a}{a,b}*表示a后面跟任意个a或b组成的字符串;

选项D:(ab)*={ab}*  表示每个ab所组成的任何长度的字符串(ab不能分离)。

ABCD四个选项只有C能保证以a开头。

故正确答案为:C

作者唯一官方个人微信公众号(昊洋与你一起成长):HYJY20180101

THE END
0.编译原理——正规表达式与有限自动机(笔记)正规式本文介绍了正规式与有限自动机的基础知识,包括正规集的概念、正规式的递归定义及其与有限自动机的等价性证明,并探讨了词法分析器的自动生成方法。 一、正规式和正规集 正规集:程序设计语言的单词表、词汇集构成的集合,即是字的集合。它有一定特殊性,我们称之为正规集。用来代表程序语言的单词表。 正规式:可以说是正规jvzquC41dnuh0lxfp0tfv8|gkzooa=;;6;<398ftvkimg8igvcomu86458656B8
1.词法分析:2.模式的形式化描述正规式字符串集合正规式本文深入探讨了正规式和正规集的概念,包括定义、运算、等价判定及辅助定义,通过实例解释了如何理解和应用正规式来描述语言集。 文章目录 一、术语 1.语言L 2.正规式和正规集的定义 (1)正规式 (2)正规集 二、正规式的读法 三、正规式的运算 1.正规式运算的优先级与结合性 jvzquC41dnuh0lxfp0tfv8xcpfgmrqtp6:<:1jwvkerf1mjvckrt1:5533<:5=
2.编译原理——正规式正规集和正则定义cai的一批正规式和正则表达式都是通过一定的语法规则来描述文法,但不是同一个概念。 正规式是一种用来描述正则语言的更紧凑的表示方法 正规式可以由较小的正规式按照特定规则递归地构建。每个正规式r定义(表示)一个语言,记为L(r) 正规集的定义 能用正规式或正规文法表示的集合称为正规集。 jvzquC41yy}/ewgnqiy/exr1yjibk8u136?52;:90jznn
3.(7)编译程序第一个工作阶段词法分析开始,第一步当然是要从源程序中读入单词了,我们在文法中描述单词的工具是什么?正规式(也称正则表达式),是用以描述单词符号的方便工具。 正规式和正规集定义: 字母表集合内,所含有两个相继的a或两个相继的b组成的串 | 正规式服从代数规律: jvzquC41yy}/mjsenq{e0ls1fkmfu}4dkctzk‚zcpno03?99;7
4.正规式和正规集之间是否有一一对应的关系()声明: 本网站大部分资源来源于用户创建编辑,上传,机构合作,自有兼职答题团队,如有侵犯了你的权益,请发送邮箱到feedback@deepthink.net.cn 本网站将在三个工作日内移除相关内容,刷刷题对内容所造成的任何后果不承担法律上的任何义务或责任 jvzquC41yy}/uqzcuj{bvr3eqo5uk87;3chd;:836h:edn>245785<;g9e;b8:3jvor
5.正规式与自动机理论(e1)*为正规式,它所表示的正规集为(L(e1))* 仅由有限次使用上述三步骤而定义的表达式才是Σ上的正规式,仅由这些正规式表示的字集才是Σ上的正规集。 正规式的等价性 若两个正规式所表示的正规集相同,则称这两个正规式等价。如: b(ab)* =(ba)*b jvzquC41dnuh0lxfp0tfv8qqpihp4<81ctzjeuj1fgzbkux132<52>:621
6.编译原理基本知识理解(二)无关状态死状态正规式 正规集 a b{a} {b} a|b{a,b} ab {ab} (a|b)* {e,a,b,aa,ab,ba,bb,aaa,……} 需要注意的是(a|b)*的任意一个子集都不能认为是一个正规集,例如 就不是一个正规集。 (2)正规式的代数性质 2.正规式与有穷自动机(FA) (1)确定有穷自动机(DFA):五元式 一个DFA有三种表示方法:转换函数,状态转换jvzquC41dnuh0lxfp0tfv8mwc{{o{~4ctvodnn4fgvgjn|4344887=72
7.编译原理正规式和正规集赵钱富贵②(e1·e2)为正规式,它所表示的正规集为L(e1)L(e2) ③(e1)*为正规式,它所表示的正规集为(L(e1))* 二、若两个正规式所表示的正规集相同则称这两个正规式等价。 证明e1=e2: ∵L(e1)=L(e2) ∴e1=e2 即证明L(e1)=L(e2) __EOF__jvzquC41yy}/ewgnqiy/exr1o|ttpm~1r1719:62994ivvq
8.编译原理学习笔记3:正规式,正规集,确定的/不确定的有穷自动机本文介绍了正规式(正则表达式)与正规集的概念,并详细解释了如何从正规式得到正规文法,反之亦然。此外,还探讨了确定的有穷自动机(DFA)与不确定的有穷自动机(NFA)的定义及其识别正规集的方式。 以后*都表示前一个元素的闭包,就当写在了右上角。 正规式和正规集 jvzquC41dnuh0lxfp0tfv8XJW3;24:=781gsvrhng1jfvjnnu1=::9>4;;
9.词法分析与有限自动机3.3.1正规式和正规集 为了识别正则语言,我们引入了状态转换图和有限自动机,有限自动机所接受的语言正是正则文法产生的语言(正则语言),程序设计语言中的单词也大多是由正则文法产生的。作为单词的语法除了用正则文法描述外,我们还可以用一种更有效的工具——正规式加以描述。 jvzquC41dnuh0lxfp0tfv8~qpiiicxhufp5bt}neng5eg}fknu58;9:3;48
10.词法分析(1)词法分析的有关概念以及转换图正规式又叫正规表达式,正规式是模式得一种规范的表达形式,正规式描述了一个集合,这个集合是由串组成的,其实这个集合就是我们前面说过的语言,不过这里大家喜欢使用正规集这个术语。正规式 r 表示正规集L(r) 正规式的运算: 1. 闭包运算,运算优先级最高,(r)* 表示 (L(r))* jvzquC41dnuh0lxfp0tfv8iknkmfp}hcv1gsvrhng1jfvjnnu1<86:769
11.编译原理:从正规文法到有限自动机正规式和正规集 为了识别正则语言,我们引入了状态转换图和有限自动机,有限自动机所接受的语言正是正规文法产生的语言(正规语言),程序设计语言中的单词也大多是由正规文法产生的。作为单词的语法除了用正规文法描外,我们还可以用一种更有效的工具——正规式加以描述。 jvzquC41dnuh0lxfp0tfv8hhn{y0c{ykenk0fnyckny09:9474=3
12.编译原理之:正规式,正规集字符串集合正规式正规式也叫正则表达式,它是一种描述字符串构成模式的方法,就是字符串的有限表示。比如正规式a∧+(a的正闭包),表达a,aa,aaa… 正规集则是对应正规式表达的所有字符串的集合。jvzquC41dnuh0lxfp0tfv8Mqumkjp8ftvkimg8igvcomu8636:=2;<<