progs/matcher/re3.sc
changeset 999 e719e420cbc7
parent 981 14e5ae1fb541
child 1003 bae8c3eb51c7
--- a/progs/matcher/re3.sc	Fri Oct 03 10:10:33 2025 +0100
+++ b/progs/matcher/re3.sc	Fri Oct 03 17:07:01 2025 +0100
@@ -12,15 +12,18 @@
 //
 //   amm re3.sc all
 
+// regular expressions (as enum in Scala 3)
+enum Rexp {
+  case ZERO                     // matches nothing
+  case ONE                      // matches an empty string
+  case CHAR(c: Char)            // matches a character c
+  case ALT(r1: Rexp, r2: Rexp)  // alternative
+  case SEQ(r1: Rexp, r2: Rexp)  // sequence
+  case STAR(r: Rexp)            // star
+  case NTIMES(r: Rexp, n: Int)  // explicit n-times
+}
+import Rexp._
 
-abstract class Rexp
-case object ZERO extends Rexp
-case object ONE extends Rexp
-case class CHAR(c: Char) extends Rexp
-case class ALT(r1: Rexp, r2: Rexp) extends Rexp 
-case class SEQ(r1: Rexp, r2: Rexp) extends Rexp 
-case class STAR(r: Rexp) extends Rexp 
-case class NTIMES(r: Rexp, n: Int) extends Rexp 
 
 
 // the nullable function: tests whether the regular