summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorBurak Emir <emir@epfl.ch>2006-08-30 11:12:20 +0000
committerBurak Emir <emir@epfl.ch>2006-08-30 11:12:20 +0000
commit927abec3b0ec9ac2a677876a4d55cebc40c83f88 (patch)
tree7d54380a391d3546344cd9acd4652b198b1ebab3 /src
parent7cb834d07b2d291ef060eab504e8e44618e18b8c (diff)
downloadscala-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.scala15
-rw-r--r--src/library/scala/util/regexp/WordExp.scala20
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 &lt;: RegExp (from Base) and a type member _labelT &lt;: 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 {