94 case '>' => (pc + 1, mp + 1, mem) |
94 case '>' => (pc + 1, mp + 1, mem) |
95 case '<' => (pc + 1, mp - 1, mem) |
95 case '<' => (pc + 1, mp - 1, mem) |
96 case '+' => (pc + 1, mp, write(mem, mp, sread(mem, mp) + 1)) |
96 case '+' => (pc + 1, mp, write(mem, mp, sread(mem, mp) + 1)) |
97 case '-' => (pc + 1, mp, write(mem, mp, sread(mem, mp) - 1)) |
97 case '-' => (pc + 1, mp, write(mem, mp, sread(mem, mp) - 1)) |
98 case '.' => { print(sread(mem, mp).toChar); (pc + 1, mp, mem) } |
98 case '.' => { print(sread(mem, mp).toChar); (pc + 1, mp, mem) } |
99 case '[' => |
99 case '[' => if (sread(mem, mp) == 0) (jumpRight(prog, pc + 1, 0), mp, mem) else (pc + 1, mp, mem) |
100 if (sread(mem, mp) == 0) (jumpRight(prog, pc + 1, 0), mp, mem) else (pc + 1, mp, mem) |
100 case ']' => if (sread(mem, mp) != 0) (jumpLeft(prog, pc - 1, 0), mp, mem) else (pc + 1, mp, mem) |
101 case ']' => |
|
102 if (sread(mem, mp) != 0) (jumpLeft(prog, pc - 1, 0), mp, mem) else (pc + 1, mp, mem) |
|
103 |
|
104 case _ => (pc + 1, mp, mem) |
101 case _ => (pc + 1, mp, mem) |
105 } |
102 } |
106 compute(prog, new_pc, new_mp, new_mem) |
103 compute(prog, new_pc, new_mp, new_mem) |
107 } |
104 } |
108 else mem |
105 else mem |