progs/app51.scala
changeset 261 24531cfaa36a
parent 93 4794759139ea
child 399 5c1fbb39c93e
equal deleted inserted replaced
260:65d1ea0e989f 261:24531cfaa36a
     1 abstract class Rexp
     1 def OPT(r: Rexp) = ALT(r, EMPTY)
     2 
     2 
     3 case object NULL extends Rexp
     3 def NTIMES(r: Rexp, n: Int) : Rexp = n match {
     4 case object EMPTY extends Rexp
     4   case 0 => EMPTY
     5 case class CHAR(c: Char) extends Rexp
     5   case 1 => r
     6 case class ALT(r1: Rexp, r2: Rexp) extends Rexp
     6   case n => SEQ(r, NTIMES(r, n - 1))
     7 case class SEQ(r1: Rexp, r2: Rexp) extends Rexp
     7 }
     8 case class STAR(r: Rexp) extends Rexp
     8