equal
  deleted
  inserted
  replaced
  
    
    
|    155 def lex(r: Rexp, s: List[Char]) : Val = s match { |    155 def lex(r: Rexp, s: List[Char]) : Val = s match { | 
|    156   case Nil => if (nullable(r)) mkeps(r) else throw new Exception("Not matched") |    156   case Nil => if (nullable(r)) mkeps(r) else throw new Exception("Not matched") | 
|    157   case c::cs => inj(r, c, lex(der(c, r), cs)) |    157   case c::cs => inj(r, c, lex(der(c, r), cs)) | 
|    158 } |    158 } | 
|    159  |    159  | 
|    160 def lexing(r: Rexp, s: String) : Val = lex(r, s.toList) |    160 import scala.util._ | 
|         |    161 def lexing(r: Rexp, s: String) : Try[Val] = Try(lex(r, s.toList)) | 
|    161  |    162  | 
|    162  |    163  | 
|    163 // some "rectification" functions for simplification |    164 // some "rectification" functions for simplification | 
|    164 def F_ID(v: Val): Val = v |    165 def F_ID(v: Val): Val = v | 
|    165 def F_RIGHT(f: Val => Val) = (v:Val) => Right(f(v)) |    166 def F_RIGHT(f: Val => Val) = (v:Val) => Right(f(v)) | 
|    241 println(lexing_simp((("" | "a") ~ ("ab" | "b")), "ab")) |    242 println(lexing_simp((("" | "a") ~ ("ab" | "b")), "ab")) | 
|    242 println(lexing_simp((("" | "a") ~ ("b" | "ab")), "ab")) |    243 println(lexing_simp((("" | "a") ~ ("b" | "ab")), "ab")) | 
|    243 println(lexing_simp((("" | "a") ~ ("c" | "ab")), "ab")) |    244 println(lexing_simp((("" | "a") ~ ("c" | "ab")), "ab")) | 
|    244  |    245  | 
|    245  |    246  | 
|         |    247 // Some more Tests | 
|         |    248 //================= | 
|         |    249 val ALL = CHARS((c) => true) | 
|         |    250 val reg = ALL.% ~ "a" ~ NTIMES(ALL, 3) ~ "bc" | 
|         |    251  | 
|         |    252 println(lexing(reg, "axaybzbc"))     // true | 
|         |    253 println(lexing(reg, "aaaaxaybzbc"))  // true | 
|         |    254 println(nullable(ders("axaybzbd".toList, reg)))     // false | 
|         |    255 println(lexing(reg, "axaybzbd"))     // false | 
|         |    256  | 
|         |    257  | 
|         |    258  | 
|    246  |    259  | 
|    247 // Two Simple Tests for the While Language |    260 // Two Simple Tests for the While Language | 
|    248 //======================================== |    261 //======================================== | 
|    249  |    262  | 
|    250 // Lexing Rules  |    263 // Lexing Rules  |