微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

正则表达式 – 将正则表达式转换为CFG

如何将一些常规语言转换为等效的Context Free Grammar?
是否有必要构造与该正则表达式相对应的DFA,或者是否存在某种转换规则?

例如,请考虑以下正则表达式

01+10(11)*

如何描述与上述RE相对应的语法?

>将A B改为语法
G -> A
G -> B

>将A *改为

G -> (empty)
G -> A G

>将AB改为

G -> AB

并且在A和B上递归地进行.基本情况是空语言(没有产生)和单个符号.

在你的情况下

A -> 01
 A -> 10B
 B -> (empty)
 B -> 11B

如果语言由有限自动机描述:

>使用状态作为非终结符号>使用语言作为终端符号集>添加转换p – > aq用于任何转换p – > q在原始自动机中的字母a上>使用初始状态作为语法中的初始符号

原文地址:https://www.jb51.cc/regex/356897.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐