lex_blex_Frankensteined.scala
changeset 14 610f14009c0b
parent 12 768b833d6230
child 15 cd0ceaf89c1d
equal deleted inserted replaced
13:4868c26268aa 14:610f14009c0b
   138 
   138 
   139 
   139 
   140   def retrieve(r: ARexp, v: Val): Bits = (r,v) match {
   140   def retrieve(r: ARexp, v: Val): Bits = (r,v) match {
   141     case (AONE(bs), Empty) => bs
   141     case (AONE(bs), Empty) => bs
   142     case (ACHAR(bs, c), Chr(d)) => bs
   142     case (ACHAR(bs, c), Chr(d)) => bs
       
   143     case (AALTS(bs, a::Nil), v) => bs ++ retrieve(a, v)
   143     case (AALTS(bs, as), Left(v)) => bs ++ retrieve(as.head,v)
   144     case (AALTS(bs, as), Left(v)) => bs ++ retrieve(as.head,v)
   144     case (AALTS(bs, as), Right(v)) => bs ++ retrieve(AALTS(Nil,as.tail),v)
   145     case (AALTS(bs, as), Right(v)) => bs ++ retrieve(AALTS(Nil,as.tail),v)
   145     case (AALTS(bs, a::Nil), v) => bs ++ retrieve(a, v)
       
   146     case (ASEQ(bs, a1, a2), Sequ(v1, v2)) => bs ++ retrieve(a1, v1) ++ retrieve(a2, v2)
   146     case (ASEQ(bs, a1, a2), Sequ(v1, v2)) => bs ++ retrieve(a1, v1) ++ retrieve(a2, v2)
   147     case (ASTAR(bs, a), Stars(Nil)) => bs ++ List(Z) 
   147     case (ASTAR(bs, a), Stars(Nil)) => bs ++ List(Z) 
   148     case (ASTAR(bs, a), Stars(v::vs)) => bs ++ List(S) ++ retrieve(a, v) ++ retrieve(ASTAR(Nil, a), Stars(vs))
   148     case (ASTAR(bs, a), Stars(v::vs)) => bs ++ List(S) ++ retrieve(a, v) ++ retrieve(ASTAR(Nil, a), Stars(vs))
   149   }
   149   }
   150   //erase function: extracts the regx from Aregex
   150   //erase function: extracts the regx from Aregex
   455     }
   455     }
   456     case STAR(r) => STAR(simp_weakened(r))
   456     case STAR(r) => STAR(simp_weakened(r))
   457     case r => r
   457     case r => r
   458   }
   458   }
   459     
   459     
   460   
       
   461   //----------------------------------------------------------------------------experiment bsimp
       
   462   /*
       
   463   def bders_simp (s: List[Char], r: ARexp) : ARexp = s match {
   460   def bders_simp (s: List[Char], r: ARexp) : ARexp = s match {
   464     case Nil => r
   461     case Nil => r
   465     case c::s => bders_simp(s, bsimp(bder(c, r)))
   462     case c::s => bders_simp(s, bsimp(bder(c, r)))
   466   }
   463   }
       
   464   //----------------------------------------------------------------------------experiment bsimp
       
   465   /*
       
   466 
   467   */
   467   */
   468   /*
   468   /*
   469   def time[T](code: => T) = {
   469   def time[T](code: => T) = {
   470     val start = System.nanoTime()
   470     val start = System.nanoTime()
   471     val result = code
   471     val result = code
   482       blex(der_res, cs)
   482       blex(der_res, cs)
   483     }
   483     }
   484   }
   484   }
   485 
   485 
   486   def bpre_lexing(r: Rexp, s: String) = blex(internalise(r), s.toList)
   486   def bpre_lexing(r: Rexp, s: String) = blex(internalise(r), s.toList)
   487   //def blexing(r: Rexp, s: String) : Val = decode(r, blex(internalise(r), s.toList))
   487   def blexing(r: Rexp, s: String) : Val = decode(r, blex(internalise(r), s.toList))
   488 
   488 
   489   var bder_time = 0L
   489   var bder_time = 0L
   490   var bsimp_time = 0L
   490   var bsimp_time = 0L
   491   var mkepsBC_time = 0L
   491   var mkepsBC_time = 0L
   492   var small_de = 2
   492   var small_de = 2