将正规文法转化为正规式

简介: 将正规文法转化为正规式

将正规文法转化为正规式有以下几个规则:

通过一道例题来讲解:

①A-->aC|bA


②C-->bD


③D-->aC|bD|


(1)首先将②带入③(不能将自身带入自身例如D-->aC|bD|,文法中带D,不能带入D)


D=abD|bD|=(ab|b)D | ,所以对应规则2(A-->xA|y),其中"(ab|b)"对应的是x,y对应的是


所以④D=x*y=(ab|b)*=(ab|b)*

(2)继续将②带入①:

⑤A=abD|bA

(3)将④带入⑤:

A=ab(ab|b)*|bA = bA|ab(ab|b)*,同样对应规则2,得到A=b*ab(ab|b)*

所以最后的结果为

A=b*ab(ab|b)*

C=bD

D=(ab|b)*

再来一道例题:


S→aA|a


A→aA|dA|a|d


解如下:


S = aA|a                


A = (aA|dA)|(a|d)=(a|d)A|(a|d)


由规则二: A = (a|d)*(a|d)


代入得: S = a(a|d)*(a|d)|a = a(a|d)*(a|d)|ε= a(a|d)*


注:这里(ald)(ald)和(ald)是等价的,因为它们都表示任意多个(a或d)的组合。


目录
相关文章
|
Cloud Native 容器
ldif 数据转成正确的组织结构再探
ldif 数据转成正确的组织结构再探
|
7月前
用人话教会你各个进制的意思和进制间的转化!!!
用人话教会你各个进制的意思和进制间的转化!!!
|
7月前
|
设计模式 算法 程序员
【C++】大气、正规的编程习惯:C++学习路径与注意事项
【C++】大气、正规的编程习惯:C++学习路径与注意事项
87 0
|
8月前
|
算法
年和日转化为天干地支
年和日转化为天干地支
30 0
|
8月前
【全网最精简】一行代码解决千万位以上的数字格式化为银行金额数字格式/货币格式(如:¥1,000,000,000.00)
【全网最精简】一行代码解决千万位以上的数字格式化为银行金额数字格式/货币格式(如:¥1,000,000,000.00)
|
算法 Python
算法创作|罗马数字的转化
算法创作|罗马数字的转化
100 2
|
存储 C#
【c#入门杂选】-显性转换,和隐形转换
【c#入门杂选】-显性转换,和隐形转换
143 0
【c#入门杂选】-显性转换,和隐形转换
|
C++
【C++操作手册】将字符串转化为数字、数字转化为字符串、字符转化为数字、数字转化为字符
【C++操作手册】将字符串转化为数字、数字转化为字符串、字符转化为数字、数字转化为字符
122 0