编译原理语言转正规表达式
‘壹’ 编译原理这个正规表达式是怎么写出来的呀
主要就是后面的两个条件:
至少2个1,
任何2个1之间有偶数个0
abd都不满足第2条
‘贰’ 【编译原理】构造下述文法G[S]的确定有限自动机,并给出该文法的语言的正规表达式 S->Aa|ε A->Aa|Sb|a
通过联立方程组求正规表达式:
A = Aa|Sb|a = Aa|(Aa|ε)b|a= Aa+(Aa+ε)b+a=Aa+(Aab+b)+a=Aa+Aab+b+a=A(a+ab)+(b+a)
根据方程X=Xt+r 必有X=t*r解的论断,可得A=(a+ab)*(b+a),进而可求得:
S = Aa|ε = Aa+ε = Aa = (a+ab)*(b+a)a = (a|ab)*(b|a)a
即文法的正规表达式为: (a|ab)*(b|a)a。
注意:以上求解的过程中“|”和“+”是等价的,都表示“或”的意思,它们的相互替换是为了描述的方便。
‘叁’ 编译原理的正规表达式问题:
1 选A,*与+的区别在于*包含0
2 B
3 D ABb>Abb>abb
4 D
5 B 循环优化的三种重要技术是: 代码外提;删除归纳变量和强度削弱。
1 错
2 对
‘肆’ 编译原理中的正规表达式
0+表示至少有一个0
0+10表示010、0010、00010等情形
(0+10)*表示(0+10)的闭包
‘伍’ 编译原理正则表达式化简
你好,语言L={a}{a,b}∗({ϵ}∪({.,_}{a,b}{a,b}∗))L={a}{a,b}
∗
({ϵ}∪({.,_}{a,b}{a,b}
∗
))
这个语言是指,由a开头,后接任意长度的a、b串,然后再接空串(代表结束)。或者是接以.或_开头的,后接长度大于等于1的a、b串。
正则表达式(Regular Expression, RE)是一种用来描述正则语言的更紧凑的表示方法。
‘陆’ 编译原理中的正则表达式与正规表达式有什么区别
完全相同,是对regular expression的不同翻译
‘柒’ 编译原理与实践中正规表达式的问题
(aa|b)*
由连续两个a或一个b的任意序列组成的语言,比如aab,baaaabbbb.
(a|bb)*
连续两个b或一个a的任意序列。
正则语言里,|表示任选,有时也用+号。*号表示闭包--就是说任意组合。
‘捌’ 编译原理 正则语言 二义文法 急~
这个没有一个好老师,自己咬文嚼字看懂是很累的
二义性文法
【定义】 若文法中存在这样的句型,它具有两棵不同的语法树,则称该文法是二义性文法。
二义性文法会引起歧义,应尽量避免之!
G(E):E -> E+E | E*E | (E) | i
这两种展开
E E
E + E E * E
i E * E E + E i
i i i i
都可以表示i+i*i
所以;文法具有二义性。
‘玖’ 编译原理,正则表达式的低级基础问题
1、正则表达式:0(0|1)*1
2、由于不方便画图,最简DFA用状态表表示如下:
(1)开始状态S------输入0------->状态A
(2)状态A-------输入0-------->状态A
(3)状态A-------输入1-------->状态B(可接受状态)
(4)状态B-------输入0-------->状态A
(5)状态B-------输入1-------->状态B(可接受状态)