第三章词法分析|正则表达式转正则文法

正则表达式 如何转换为 正则文法 ?

转换公式如下:

① 对形如 A-> α|β的正则表达式,转换为

A->α

A->β

② 对形如 A->αβ 的正则表达式,转换为

A->αB

B->β

③ 对形如 A->α*β的正则表达式,转换为

A->αB

A->β

B->αB

B->β

例题1:将正则表达式 r = a(a|d)* 转化为相应的正则文法G【S】。

设开始符号为S,则有 S -> a(a|d)*。

把a看作α,(a|d)*看作β,即S -> αβ。带入公式②得到:

S -> aA     ...........    线性文法,符合正则文法 (结果1)

A -> (a|d)*

继续对 A -> (a|d)* 进行分析。

把 A -> (a|d)* 变成  A -> (a|d)*ε 

把 (a|d)*看作α*,把ε 看作β,即A->α*β。带入公式③得到:

A -> (a|d)B

A -> ε

B -> (a|d)B

B -> ε

把所有带“|”的产生式写开,用公式①。

A -> aB     ...........    线性文法,符合正则文法 (结果2)

A -> dB     ...........    线性文法,符合正则文法 (结果3)

A -> ε         ...........    线性文法,符合正则文法 (结果4)

B -> aB     ...........    线性文法,符合正则文法 (结果5)

B -> dB     ...........    线性文法,符合正则文法 (结果6)

B -> ε        ...........    线性文法,符合正则文法 (结果7)

最终的正则文法G【S】结果如下:

S -> aA   

A -> aB    

A -> dB     

A -> ε        

B -> aB    

B -> dB    

B -> ε        

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

访问宇宙

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值