scala包scala.util.automata的目的是什么?

时间:2011-03-04 20:04:28

标签: parsing scala automation packages

我很久以前就看过scala.util.automata这个包了,最近读了一点ScalaDoc时就崩溃了。

有没有人在任何地方看到过这个软件包并且出于何种目的使用?

我想知道这些类是否与解析器组合器有某种连接,或者它们是否是独立使用的?

这些类的名称类似于

class BaseBerrySethi
class DetWordAutom[T <: AnyRef]
trait Inclusion[A <: AnyRef]
class NondetWordAutom[T <: AnyRef]
class SubsetConstruction[T <: AnyRef]
class WordBerrySethi extends BaseBerrySethi 

和一个不太有用的描述。

看起来他们将随Scala 2.9一起发货。

2 个答案:

答案 0 :(得分:5)

这是有限自动机转换的正则表达式的实现。 http://www2.in.tum.de/hp/file?fid=571 [PDF]可以在http://www.scala-lang.org/api/current/scala/util/regexp/WordExp.html找到创建NDFA的一种方法示例,但这并未显示如何使用生成的自动机。看起来自动机将通过重复调用“next”来使用,以BitSet的形式处理状态集并通过containsFinal检查每次以查看自动机是否已达到最终状态。我没看到的是初始状态应该表示为什么,但似乎初始状态可能是一个空的BitSet。

答案 1 :(得分:1)

这是我开始学习Scala时遇到的第一件事。也发现了一些错误。它并不是特别有用,甚至还有一些关于弃用它的讨论。

它确实实现了一种相当灵活的算法,可以将正则表达式一直转换为DFA,但DFA本身并不是特别灵活,iirc。

相关问题