词法规则和正则表达式规则一样吗
发布时间:2025-05-22 05:34:45 发布人:远客网络
一、词法规则和正则表达式规则一样吗
1、词法规则和正则表达式规则一样吗
2、在编译原理中,语法规则和词法规则不同之处在于:规则主要识别单词,而语法主要识别多个单词组成的句子。
3、词法分析阶段是编译过程的第一个阶段。这个阶段的任务是从左到右一个字符一个字符地读入源程序,即对构成源程序的字符流进行扫描然后根据构词规则识别单词(也称单词符号或符号)。词法分析程序实现这个任务。词法分析程序可以使用lex等工具自动生成。
4、语法分析(Syntax analysis或Parsing)和语法分析程序(Parser)
5、语法分析是编译过程的一个逻辑阶段。语法分析的任务是在词法分析的基础上将单词序列组合成各类语法短语,如“程序”,“语句”,“表达式”等等.语法分析程序判断源程序在结构上是否正确.源程序的结构由上下文无关文法描述.
6、语义分析是编译过程的一个逻辑阶段.语义分析的任务是对结构上正确的源程序进行上下文有关性质的审查,进行类型审查.语义分析将审查类型并报告错误:不能在表达式中使用一个数组变量,赋值语句的右端和左端的类型不匹配.
二、正则表达式“或“的使用
正则表达式,又称规则表达式。是计算机科学的一个概念。
正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。许多程序设计语言都支持利用正则表达式进行字符串操作。例如,在Perl中就内建了一个功能强大的正则表达式引擎。正则表达式这个概念最初是由Unix中的工具软件(例如sed和grep)普及开的。
正则表达式通常缩写成“regex”,单数有regexp、regex,复数有regexps、regexes、regexen。
检查字符串是否符合正则表达式中的规则,有一次不匹配,则返回false。如:
String reg="[a-zA-Z]\\d?";//次表达式表示字符串的第一位只能是字母,第二位只能是数字或没有boolean flag=str.matches(reg);//返回结果为true。
所谓切割,即是按一定的规则将字符串分割成多个子字符串,如:
String str="zhangsan,lishi,wangwu"。
String reg=",";//表示以逗号作为切割符。
String[] arr=str.split(reg);//返回结果为{“zhangsan”,"lisi","wangwu}。
即将字符串中符合规则的字符替换成指定字符,如:
String str="sfhjhfh136hjasdf73466247fsjha8437482jfjsfh746376"。
str.replaceAll("\\d{3,}","#");//表示将连续出现三个或三个以上的数字替换成“#”。
参考资料来源:百度百科-正则表达式
三、3.正则式的表示与转换
1、正则集是字符串的集合,即T*的子集,构成了语言的基础。
2、正则式是用代数表达式表示的语言集合。
3、正则运算包括联合(union)、连接(concatenation)和闭包(closure),用于操作语言。
4、联合(union):L∪M表示L或M中的字符串。
5、连接(concatenation):L•M表示L和M字符串的连接。
6、闭包(closure):表示字符串的无限连接。
7、正则表达式例子:表示交替0s和1s的字符串:(01)*+(10)*+ 0(10)*+ 1(01)*。
8、正则表达式的性质包括交换律、结合律、等幂律、幺元ε和零元ф。
9、右线性文法与正则式可表示相同正则语言,二者等效。
10、求解右线性文法产生语言的正则式:首先将文法生成式写为联立方程,利用规则R解出表达式。
11、求解例题:根据右线性文法生成式构造联立方程,利用规则R解出S、A、B、C的表达式,最终得到正则式为S=(aab)*(bbc)*(b+d)(abb+ε)。
12、证明正则集是由右线性文法产生的语言:从最简单的正则式出发,证明正则集Φ、{ε}、{a}是右线性语言;在前一步基础上,对于并、积、闭包形成的正则集,通过证明右线性语言来间接证明。
13、证明有限自动机可接受正则语言:给定正则式,构造具有ε转换的有限自动机,实现语言识别。
14、从DFA构造等价正则表达式:状态消去法通过扩展自动机概念,简化自动机状态,得到正则表达式。
15、从正则表达式构造ε-NFA:根据正则表达式构造具有ε转换的不确定有限自动机。
16、右线性语言与有限自动机的关系:正则集有四种定义方式,四种定义等价。
17、右线性文法转换为有限自动机:构造与文法等价的NFA,满足接受语言的定义。
18、有限自动机转换为右线性文法:根据有限自动机构建右线性文法,实现语言生成。
19、总结:正则集、正则式、正则运算、正则表达式、右线性文法、有限自动机之间存在等效关系,构成形式语言理论的基础。