加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

有没有一个程序允许我使用有限状态机图设计正则表达式?

发布时间:2020-12-14 06:22:47 所属栏目:百科 来源:网络整理
导读:我厌倦了正则表达式.这是丑陋的,不可读的,也无法调试.然而,数学家几十年来一直使用有限状态机来设计正则表达式. 如果我对正则表达式感到恼火,我会手动将其绘制为有限状态机,然后必须将有限状态机转换为我今天使用的任何可怕的正则表达式语法. 有没有一个程序
我厌倦了正则表达式.这是丑陋的,不可读的,也无法调试.然而,数学家几十年来一直使用有限状态机来设计正则表达式.

如果我对正则表达式感到恼火,我会手动将其绘制为有限状态机,然后必须将有限状态机转换为我今天使用的任何可怕的正则表达式语法.

有没有一个程序可以让我设计有限状态机并吐出一个正则表达式?

如果您了解 Python,则可以尝试 greenery.包fsm用于有限状态机,lego用于正则表达式对象.这两者可以自由地互换.
>>> from greenery import fsm
>>> x = fsm.fsm(
...     alphabet={"1","2"},...     states={"A","B","C","D","E"},...     initial="A",...     finals={"E"},...     map={
...         "A": {"1": "C","2": "A"},...         "B": {"1": "B","2": "D"},...         "C": {"1": "E","2": "C"},...         "D": {"1": "A","2": "B"},...         "E": {"1": "C","2": "D"}
...     }
... )
>>> print(x.lego())
(1(11|2)*12(21*2)*1|2)*1(11|2)*1

我觉得我应该指出你的示例有限状态机缺少初始状态和任何最终状态,所以我猜对了.此外,任意FSM通常会转换为非常可怕的正则表达式,简化正则表达式在计算上很困难……

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读