testing5/bf.scala
changeset 325 ca9c1cf929fa
parent 285 bd9d142d2cd8
child 340 9eeab89d0671
equal deleted inserted replaced
324:2969ee4a6cee 325:ca9c1cf929fa
    91       case '>' => (pc + 1, mp + 1, mem)
    91       case '>' => (pc + 1, mp + 1, mem)
    92       case '<' => (pc + 1, mp - 1, mem)
    92       case '<' => (pc + 1, mp - 1, mem)
    93       case '+' => (pc + 1, mp, write(mem, mp, sread(mem, mp) + 1))
    93       case '+' => (pc + 1, mp, write(mem, mp, sread(mem, mp) + 1))
    94       case '-' => (pc + 1, mp, write(mem, mp, sread(mem, mp) - 1))
    94       case '-' => (pc + 1, mp, write(mem, mp, sread(mem, mp) - 1))
    95       case '.' => { print(sread(mem, mp).toChar); (pc + 1, mp, mem) }
    95       case '.' => { print(sread(mem, mp).toChar); (pc + 1, mp, mem) }
    96       case ',' => (pc + 1, mp, write(mem, mp, Console.in.read().toByte))
    96       case ',' => (pc + 1, mp, write(mem, mp, scala.io.StdIn.readByte()))
    97       case '['  => 
    97       case '['  => 
    98 	if (sread(mem, mp) == 0) (jumpRight(prog, pc + 1, 0), mp, mem) else (pc + 1, mp, mem) 
    98 	if (sread(mem, mp) == 0) (jumpRight(prog, pc + 1, 0), mp, mem) else (pc + 1, mp, mem) 
    99       case ']'  => 
    99       case ']'  => 
   100 	if (sread(mem, mp) != 0) (jumpLeft(prog, pc - 1, 0), mp, mem) else (pc + 1, mp, mem) 
   100 	if (sread(mem, mp) != 0) (jumpLeft(prog, pc - 1, 0), mp, mem) else (pc + 1, mp, mem) 
   101       case _ => (pc + 1, mp, mem)
   101       case _ => (pc + 1, mp, mem)