diff options
author | Burak Emir <emir@epfl.ch> | 2006-08-30 11:12:20 +0000 |
---|---|---|
committer | Burak Emir <emir@epfl.ch> | 2006-08-30 11:12:20 +0000 |
commit | 927abec3b0ec9ac2a677876a4d55cebc40c83f88 (patch) | |
tree | 7d54380a391d3546344cd9acd4652b198b1ebab3 /src | |
parent | 7cb834d07b2d291ef060eab504e8e44618e18b8c (diff) | |
download | scala-927abec3b0ec9ac2a677876a4d55cebc40c83f88.tar.gz scala-927abec3b0ec9ac2a677876a4d55cebc40c83f88.tar.bz2 scala-927abec3b0ec9ac2a677876a4d55cebc40c83f88.zip |
bugfix + comment
Diffstat (limited to 'src')
-rw-r--r-- | src/library/scala/util/automata/BaseBerrySethi.scala | 15 | ||||
-rw-r--r-- | src/library/scala/util/regexp/WordExp.scala | 20 |
2 files changed, 27 insertions, 8 deletions
diff --git a/src/library/scala/util/automata/BaseBerrySethi.scala b/src/library/scala/util/automata/BaseBerrySethi.scala index 35dab49a8f..c7adf744c7 100644 --- a/src/library/scala/util/automata/BaseBerrySethi.scala +++ b/src/library/scala/util/automata/BaseBerrySethi.scala @@ -52,16 +52,17 @@ abstract class BaseBerrySethi { case Eps => emptySet; //case x:Letter => emptySet + posMap(x); // singleton set case x:Meta => compFirst( x.r ) - case x:Sequ => + case x:Sequ => var tmp = emptySet; val it = x.rs.elements; // union while( it.hasNext ) { - val z = it.next; - tmp = tmp incl compFirst( z ); - if( !z.isNullable ) - return tmp - }; - tmp + val z = it.next + tmp = tmp incl compFirst( z ) + if( !z.isNullable ) + return tmp + } + tmp + case Star(t) => compFirst(t); case _ => error("unexpected pattern " + Platform.getClass(r)); } diff --git a/src/library/scala/util/regexp/WordExp.scala b/src/library/scala/util/regexp/WordExp.scala index 14bcbb3ec1..fdf795bb61 100644 --- a/src/library/scala/util/regexp/WordExp.scala +++ b/src/library/scala/util/regexp/WordExp.scala @@ -12,7 +12,25 @@ package scala.util.regexp ; -/** regular word expressions. +/** regular word expressions. users have to instantiate type member _regexpT <: RegExp (from Base) and a type member _labelT <: Label + * Here is a little example: +<pre> + import scala.util.regexp._ + import scala.util.automata._ + object MyLang extends WordExp { + type _regexpT = RegExp + type _labelT = MyChar + + case class MyChar(c:Char) extends Label + } + import MyLang._ + // (a* | b)* + val rex = Star(Alt(Star(Letter(MyChar('a'))),Letter(MyChar('b')))) + object MyBerriSethi extends WordBerrySethi { + override val lang = MyLang + } + val nfa = MyBerriSethi.automatonFrom(Sequ(rex),1) +</pre> */ abstract class WordExp extends Base { |