自动机和正则表达式理论工具

时间:2012-09-28 12:17:52

标签: regex command-line finite-automata automata

回到2000年,当我还是一名学生时,我参加了自动化理论课程。在本课程的练习中,我们基本上重新编写了一个名为Grail的unix命令行工具(http://www.csd.uwo.ca/Research/grail/)。 Grail允许您读入具有正则表达式或确定性/非确定性有限状态机的文件,并对它们应用典型的理论操作:最小化FSM,检查空虚,反转,FSM产品,FSM到RegEx和RegEx到FSM,应用输入字符串并模拟机器等。

Grail似乎可用,但显然自2002年以来尚未开发。因此我的问题是:有没有人知道仍在积极开发中的类似工具? (即现代圣杯?)今天课堂上使用了什么?

我正在寻找的是一个命令行工具,它从stdin读取FSM或RegExes,应用操作,并将结果输出到Unix方式的stdout,以便您可以创建自己的管道。简单的FSM和RegEx就足够了,所以像pushdown automatas或Büchiautmatas这样的东西并不是必需的。

如果没有命令行工具,那里有好的库或图形工具吗?

谢谢!

5 个答案:

答案 0 :(得分:3)

Vaucanson平台与OpenFst一样,提供了一个名为TAFKit的命令行工具,它可以完全满足您的要求:它从stdin读取FSM或RegExp,或者从已存储的文件中读取已经计算过的对象,对它们执行操作(大约70个)功能可用),并在stdout或文件中输出结果以供进一步处理。您可以管道,并创建shell脚本。

要下载Vaucanson 1.4.1,请转到

http://www.lrde.epita.fr/cgi-bin/twiki/view/Vaucanson/Vaucanson141

你会找到一个相当完整的用户手册。

如需进一步信息,请随时给我发邮件。

                   Jacques Sakarovitch
                   sakarovitch@enst.fr

答案 1 :(得分:2)

OpenFst是一组用于操作有限状态传感器的命令行工具,有一个配套语法工具包OpenGrm。可以使用GraphViz显示机器。

foma是另一个具有正则表达式支持的传感器工具包。

答案 2 :(得分:1)

jFlap是一个用Java编写的类似程序。最后一次更新是2011年5月

答案 3 :(得分:1)

查看http://www.stanford.edu/~laurik/fsmbook/home.html处的tokenize和lookup命令行工具。这些设计用于标记文本(将其分为单词)和查找单词的形态读数,但更普遍适用。

对于在OpenFst上构建的Thrax语言,可以使用如下命令行工具:

cat input1 BAB BABBAB 巴巴

cat input1 | thraxrewrite-tester --far = testrewrite.far --rule = R1 | cut -f5 -d'' 围兜 bibbib BIBA

R1在上下文b _ b中用'i'代替'a'。

答案 4 :(得分:0)

对于java,我个人使用的http://www.brics.dk/automaton/已经不在积极开发中,但它仍然被广泛使用,非常稳定且非常快。可以将正则表达式转换为自动机并应用不同的运算,例如连接,交集,并集等。然而,唯一缺失的是将自动机向后转换为正则表达式字符串。

我在dk.brics之上实现了一个库,它允许您通过状态消除从其自动机表示中派生正则表达式字符串。通过使用此库,应该可以开发上面描述的命令行工具。

如果您有兴趣,可以查看https://github.com/julianthome/autorex

祝福和亲切的问候,   儒略

相关问题