我厌倦了正则表达式.这是丑陋的,不可读的,也无法调试.然而,数学家几十年来一直使用有限状态机来设计正则表达式.
如果我对正则表达式感到恼火,我会手动将其绘制为有限状态机,然后必须将有限状态机转换为我今天使用的任何可怕的正则表达式语法.
有没有一个程序可以让我设计有限状态机并吐出一个正则表达式?
如果您了解
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通常会转换为非常可怕的正则表达式,简化正则表达式在计算上很困难……
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。