--- 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