equal
deleted
inserted
replaced
1 // Part 1 about an Interpreter for the Brainf***++ language |
1 // Core Part about an Interpreter for |
2 //======================================================== |
2 // the Brainf***++ language |
3 |
3 //============================================== |
4 |
4 |
5 object CW10a { |
5 object CW10a { |
|
6 |
|
7 |
|
8 // representation of Bf memory |
|
9 |
|
10 type Mem = Map[Int, Int] |
|
11 |
|
12 |
|
13 // (1) Write a function that takes a file name as argument and |
|
14 // and requests the corresponding file from disk. It Returns the |
|
15 // content of the file as a String. If the file does not exists, |
|
16 // the function should Return the empty string. |
6 |
17 |
7 import io.Source |
18 import io.Source |
8 import scala.util._ |
19 import scala.util._ |
9 |
|
10 |
|
11 type Mem = Map[Int, Int] |
|
12 |
|
13 |
|
14 // (1) Write a function that takes a file name as argument and |
|
15 // and requests the corresponding file from disk. It returns the |
|
16 // content of the file as a String. If the file does not exists, |
|
17 // the function should return the empty string. |
|
18 |
20 |
19 def load_bff(name: String) : String = |
21 def load_bff(name: String) : String = |
20 Try(Source.fromFile(name)("ISO-8859-1").mkString).getOrElse("") |
22 Try(Source.fromFile(name)("ISO-8859-1").mkString).getOrElse("") |
21 |
23 |
22 |
24 |
80 // If the pc points to a character inside the program, the pc, |
82 // If the pc points to a character inside the program, the pc, |
81 // memory pointer and memory need to be updated according to |
83 // memory pointer and memory need to be updated according to |
82 // rules of the brainf***++ language. Then, recursively, the compute |
84 // rules of the brainf***++ language. Then, recursively, the compute |
83 // function continues with the command at the new program |
85 // function continues with the command at the new program |
84 // counter. |
86 // counter. |
|
87 // |
85 // Implement the run function that calls compute with the program |
88 // Implement the run function that calls compute with the program |
86 // counter and memory counter set to 0. |
89 // counter and memory counter set to 0. |
87 |
90 |
88 def compute(prog: String, pc: Int, mp: Int, mem: Mem) : Mem = { |
91 def compute(prog: String, pc: Int, mp: Int, mem: Mem) : Mem = { |
89 if (0 <= pc && pc < prog.length) { |
92 if (0 <= pc && pc < prog.length) { |