diff options
-rw-r--r-- | sources/scala/util/automata/WordBerrySethi.scala | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/sources/scala/util/automata/WordBerrySethi.scala b/sources/scala/util/automata/WordBerrySethi.scala index ba0b3f8f7c..f361b6b174 100644 --- a/sources/scala/util/automata/WordBerrySethi.scala +++ b/sources/scala/util/automata/WordBerrySethi.scala @@ -37,13 +37,15 @@ abstract class WordBerrySethi extends BaseBerrySethi { /** computes first( r ) where the word regexp r */ protected override def compFirst(r: RegExp): immutable.Set[Int] = r match { case x:Letter => emptySet + x.pos ;//posMap(x); // singleton set - case _ => super.compFirst(r); + case Eps => emptySet /*ignore*/ + case _ => super.compFirst(r); } /** computes last( r ) where the word regexp r */ protected override def compLast(r: RegExp): immutable.Set[Int] = r match { case x:Letter => emptySet + x.pos; //posMap(x) // singleton set - case _ => super.compLast(r) + case Eps => emptySet /*ignore*/ + case _ => super.compLast(r) } /** returns the first set of an expression, setting the follow set along @@ -58,6 +60,8 @@ abstract class WordBerrySethi extends BaseBerrySethi { this.follow.update( i, fol1 ); emptySet + i; + case Eps => emptySet /*ignore*/ + case _ => super.compFollow1(fol1, r) } @@ -89,7 +93,8 @@ abstract class WordBerrySethi extends BaseBerrySethi { // todo: replace global variable pos with acc override def traverse(r: RegExp): Unit = r match { case a @ Letter( label ) => a.pos = seenLabel( r, label ) ; - case _ => super.traverse(r) + case Eps => /*ignore*/ + case _ => super.traverse(r) } @@ -237,7 +242,7 @@ abstract class WordBerrySethi extends BaseBerrySethi { val delta = deltaArr; val default = defaultArr; } - case _ => error("expected Sequ"); + case z:this.lang._regexpT => automatonFrom(Sequ(z), finalTag); } } |