2

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

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

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

如果没有命令行工具,是否有好的库或图形工具?

4

5 回答 5

3

Vaucanson 平台和 OpenFst 一样,提供了一个名为 TAFKit 的命令行工具,它完全符合您的要求:它从标准输入或已存储文件中读取 FSM 或 RegExp 以获取已计算的对象,并对它们执行操作(大约 70 个可用函数) ,并将结果输出到标准输出或文件中以供进一步处理。您可以通过管道传输和创建 shell 脚本。

如需下载 Vaucanson 1.4.1,请访问

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

您会在那里找到相当完整的用户手册。

欲了解更多信息,请随时给我发邮件。

                   Jacques Sakarovitch
                   sakarovitch@enst.fr
于 2013-01-21T20:31:50.523 回答
2

OpenFst是一组用于操作有限状态转换器的命令行工具,还有一个配套的语法工具包 OpenGrm。这些机器可以使用 GraphViz 进行可视化。

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

于 2012-09-29T06:42:48.903 回答
1

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

对于基于 OpenFst 构建的 Thrax 语言,有一个可用的命令行工具,如下所示:

cat input1 bab babbab baba

猫输入1 | thraxrewrite-tester --far=testrewrite.far --rule=R1 | cut -f5 -d' ' bib bibbib biba

R1 在上下文 b_b 中用“i”代替“a”。

于 2012-12-21T08:55:35.640 回答
1

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

于 2012-09-29T06:47:09.207 回答
0

对于 java,我个人使用http://www.brics.dk/automaton/,它不再真正处于积极开发中,但它仍然被广泛使用,非常稳定且非常快。可以将正则表达式转换为自动机并应用不同的操作,例如连接、交集、联合等。然而,唯一缺少的部分是将自动机反向翻译为正则表达式字符串。

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

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

最良好的祝愿和亲切的问候,朱利安

于 2016-09-24T19:47:23.810 回答