progs/re1.scala
changeset 454 010237a7dae7
parent 453 a5525c780b96
child 467 3fc9b036321d
equal deleted inserted replaced
453:a5525c780b96 454:010237a7dae7
     3 case object ONE extends Rexp
     3 case object ONE extends Rexp
     4 case class CHAR(c: Char) extends Rexp
     4 case class CHAR(c: Char) extends Rexp
     5 case class ALT(r1: Rexp, r2: Rexp) extends Rexp 
     5 case class ALT(r1: Rexp, r2: Rexp) extends Rexp 
     6 case class SEQ(r1: Rexp, r2: Rexp) extends Rexp 
     6 case class SEQ(r1: Rexp, r2: Rexp) extends Rexp 
     7 case class STAR(r: Rexp) extends Rexp 
     7 case class STAR(r: Rexp) extends Rexp 
     8 case class RANGE(cs: List[Char]) extends Rexp
       
     9 case class PLUS(r: Rexp) extends Rexp
       
    10 case class OPT(r: Rexp) extends Rexp
       
    11 case class NTIMES(r: Rexp, n : Int) extends Rexp
       
    12 case class NMTIMES(r: Rexp, n : Int, m : Int) extends Rexp
       
    13 
       
    14 
     8 
    15 // nullable function: tests whether the regular 
     9 // nullable function: tests whether the regular 
    16 // expression can recognise the empty string
    10 // expression can recognise the empty string
    17 def nullable (r: Rexp) : Boolean = r match {
    11 def nullable (r: Rexp) : Boolean = r match {
    18   case ZERO => false
    12   case ZERO => false