updated resource folder location
This commit is contained in:
@@ -35,7 +35,7 @@ public class BfInterpreter {
|
|||||||
public void setCodeFromFile(String fileName) throws IOException, NullPointerException {
|
public void setCodeFromFile(String fileName) throws IOException, NullPointerException {
|
||||||
String res = "";
|
String res = "";
|
||||||
|
|
||||||
FileInputStream fis = new FileInputStream("src/main/java/resources/" + fileName);
|
FileInputStream fis = new FileInputStream(fileName);
|
||||||
code = IOUtils.toString(fis, "UTF-8");
|
code = IOUtils.toString(fis, "UTF-8");
|
||||||
// System.out.println("code is: " + code);
|
// System.out.println("code is: " + code);
|
||||||
|
|
||||||
@@ -104,129 +104,4 @@ public class BfInterpreter {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void interpretAgain(String code) {
|
|
||||||
final int LENGTH = 65535;
|
|
||||||
byte[] mem = new byte[LENGTH];
|
|
||||||
int dataPointer = 0;
|
|
||||||
int l = 0;
|
|
||||||
for (int i = 0; i < code.length(); i++) {
|
|
||||||
if (code.charAt(i) == '>') {
|
|
||||||
dataPointer = (dataPointer == LENGTH - 1) ? 0 : dataPointer + 1;
|
|
||||||
} else if (code.charAt(i) == '<') {
|
|
||||||
dataPointer = (dataPointer == 0) ? LENGTH - 1 : dataPointer - 1;
|
|
||||||
} else if (code.charAt(i) == '+') {
|
|
||||||
mem[dataPointer]++;
|
|
||||||
} else if (code.charAt(i) == '-') {
|
|
||||||
mem[dataPointer]--;
|
|
||||||
} else if (code.charAt(i) == '.') {
|
|
||||||
System.out.print((char) mem[dataPointer]);
|
|
||||||
} else if (code.charAt(i) == ',') {
|
|
||||||
mem[dataPointer] = (byte) sc.next().charAt(0);
|
|
||||||
} else if (code.charAt(i) == '[') {
|
|
||||||
if (mem[dataPointer] == 0) {
|
|
||||||
i++;
|
|
||||||
while (l > 0 || code.charAt(i) != ']') {
|
|
||||||
if (code.charAt(i) == '[')
|
|
||||||
l++;
|
|
||||||
if (code.charAt(i) == ']')
|
|
||||||
l--;
|
|
||||||
i++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else if (code.charAt(i) == ']') {
|
|
||||||
if (mem[dataPointer] != 0) {
|
|
||||||
i--;
|
|
||||||
while (l > 0 || code.charAt(i) != '[') {
|
|
||||||
if (code.charAt(i) == ']')
|
|
||||||
l++;
|
|
||||||
if (code.charAt(i) == '[')
|
|
||||||
l--;
|
|
||||||
i--;
|
|
||||||
}
|
|
||||||
i--;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Deprecated
|
|
||||||
public void interpretSwitch() {
|
|
||||||
int pointer = 0;
|
|
||||||
int c = 0;
|
|
||||||
for (int i = 0; i < codeArray.length; i++) {
|
|
||||||
|
|
||||||
switch (this.codeArray[i]) {
|
|
||||||
case '+':
|
|
||||||
memory[pointer]++;
|
|
||||||
break;
|
|
||||||
case '-':
|
|
||||||
memory[pointer]--;
|
|
||||||
break;
|
|
||||||
case '>':
|
|
||||||
pointer++;
|
|
||||||
break;
|
|
||||||
case '<':
|
|
||||||
pointer--;
|
|
||||||
break;
|
|
||||||
case '.':
|
|
||||||
System.out.print(String.valueOf((char) memory[pointer]));
|
|
||||||
break;
|
|
||||||
case ',':
|
|
||||||
memory[pointer] = sc.next().trim().getBytes()[0];
|
|
||||||
break;
|
|
||||||
case '[':
|
|
||||||
|
|
||||||
if (memory[pointer] == 0) {
|
|
||||||
i++;
|
|
||||||
while (c > 0 || this.codeArray[i] != ']') {
|
|
||||||
if (this.codeArray[i] == '[') {
|
|
||||||
c++;
|
|
||||||
} else if (this.codeArray[i] == ']') {
|
|
||||||
c--;
|
|
||||||
}
|
|
||||||
i++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// int endLoopPos = i;
|
|
||||||
// // search for next ']'
|
|
||||||
// while (code[endLoopPos] != ']') {
|
|
||||||
// // keep incrementing until end of loop is found
|
|
||||||
// endLoopPos++;
|
|
||||||
// }
|
|
||||||
// if (memory[pointer] == 0) {
|
|
||||||
// i = endLoopPos + 1;
|
|
||||||
// }
|
|
||||||
break;
|
|
||||||
case ']':
|
|
||||||
|
|
||||||
if (memory[pointer] != 0) {
|
|
||||||
i--;
|
|
||||||
while (c > 0 || this.codeArray[i] == '[') {
|
|
||||||
if (this.codeArray[i] == ']') {
|
|
||||||
c++;
|
|
||||||
} else if (this.codeArray[i] == '[') {
|
|
||||||
c--;
|
|
||||||
}
|
|
||||||
i--;
|
|
||||||
}
|
|
||||||
i--;
|
|
||||||
}
|
|
||||||
// int beginLoopPos = i;
|
|
||||||
// // search for previous '['
|
|
||||||
// while (code[beginLoopPos] != '[') {
|
|
||||||
// // keep decrementing until begin of loop is found
|
|
||||||
// beginLoopPos--;
|
|
||||||
// }
|
|
||||||
|
|
||||||
// if (memory[pointer] != 0) {
|
|
||||||
// i = beginLoopPos;
|
|
||||||
// }
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -1,4 +1,5 @@
|
|||||||
package brainfuck.interpreter;
|
package brainfuck.interpreter;
|
||||||
|
|
||||||
public class Controller {
|
public class Controller {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user