From 19c07d74099a4eb81c9aa9f54700e943ce3a3b7a Mon Sep 17 00:00:00 2001 From: Sem van der Hoeven Date: Mon, 2 Dec 2019 22:42:34 +0100 Subject: [PATCH] stuff --- .classpath | 44 +++++++++++++ .project | 23 +++++++ .settings/org.eclipse.jdt.apt.core.prefs | 2 + .settings/org.eclipse.jdt.core.prefs | 9 +++ .settings/org.eclipse.m2e.core.prefs | 4 ++ .vscode/launch.json | 11 ++++ src/main/java/brainfuck/interpreter/App.java | 13 ---- .../brainfuck/interpreter/BfInterpreter.java | 65 +++++++++++++++++++ src/main/java/brainfuck/interpreter/Main.java | 21 ++++++ 9 files changed, 179 insertions(+), 13 deletions(-) create mode 100644 .classpath create mode 100644 .project create mode 100644 .settings/org.eclipse.jdt.apt.core.prefs create mode 100644 .settings/org.eclipse.jdt.core.prefs create mode 100644 .settings/org.eclipse.m2e.core.prefs create mode 100644 .vscode/launch.json delete mode 100644 src/main/java/brainfuck/interpreter/App.java create mode 100644 src/main/java/brainfuck/interpreter/BfInterpreter.java create mode 100644 src/main/java/brainfuck/interpreter/Main.java diff --git a/.classpath b/.classpath new file mode 100644 index 0000000..75b806f --- /dev/null +++ b/.classpath @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.project b/.project new file mode 100644 index 0000000..4578cbf --- /dev/null +++ b/.project @@ -0,0 +1,23 @@ + + + BrainfuckInterpreter + + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.m2e.core.maven2Builder + + + + + + org.eclipse.jdt.core.javanature + org.eclipse.m2e.core.maven2Nature + + diff --git a/.settings/org.eclipse.jdt.apt.core.prefs b/.settings/org.eclipse.jdt.apt.core.prefs new file mode 100644 index 0000000..d4313d4 --- /dev/null +++ b/.settings/org.eclipse.jdt.apt.core.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.apt.aptEnabled=false diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000..ac8e750 --- /dev/null +++ b/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,9 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5 +org.eclipse.jdt.core.compiler.compliance=1.5 +org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled +org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning +org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=ignore +org.eclipse.jdt.core.compiler.processAnnotations=disabled +org.eclipse.jdt.core.compiler.release=disabled +org.eclipse.jdt.core.compiler.source=1.5 diff --git a/.settings/org.eclipse.m2e.core.prefs b/.settings/org.eclipse.m2e.core.prefs new file mode 100644 index 0000000..f897a7f --- /dev/null +++ b/.settings/org.eclipse.m2e.core.prefs @@ -0,0 +1,4 @@ +activeProfiles= +eclipse.preferences.version=1 +resolveWorkspaceProjects=true +version=1 diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000..c24144d --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,11 @@ +{ + "configurations": [ + { + "type": "java", + "name": "CodeLens (Launch) - Main", + "request": "launch", + "mainClass": "brainfuck.interpreter.Main", + "projectName": "BrainfuckInterpreter" + } + ] +} \ No newline at end of file diff --git a/src/main/java/brainfuck/interpreter/App.java b/src/main/java/brainfuck/interpreter/App.java deleted file mode 100644 index 3bc2c66..0000000 --- a/src/main/java/brainfuck/interpreter/App.java +++ /dev/null @@ -1,13 +0,0 @@ -package brainfuck.interpreter; - -/** - * Hello world! - * - */ -public class App -{ - public static void main( String[] args ) - { - System.out.println( "Hello World!" ); - } -} diff --git a/src/main/java/brainfuck/interpreter/BfInterpreter.java b/src/main/java/brainfuck/interpreter/BfInterpreter.java new file mode 100644 index 0000000..c4e8112 --- /dev/null +++ b/src/main/java/brainfuck/interpreter/BfInterpreter.java @@ -0,0 +1,65 @@ +package brainfuck.interpreter; + +import java.io.UnsupportedEncodingException; +import java.util.Scanner; + +/** + * Brainfuck interpreter. + * + * @author Sem van der Hoeven + */ +public class BfInterpreter { + + private char[] code; + private byte[] memory; + private Scanner sc; + + public final int MAX_SIZE = 65535; + + public BfInterpreter(String code) throws Exception { + if (code == null) { + throw new Exception("The code cannot be null!"); + } + + this.sc = new Scanner(System.in); + this.code = code.toCharArray(); + this.memory = new byte[MAX_SIZE]; + } + + public void interpret() { + int pointer = 0; + for (int i = 0; i < this.code.length; i++) { + switch (this.code[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 '[': // als de memory[pointer] 0 is, spring naar de plek na de volgende ] ipv een vooruit + + break; + case ']': // als de memory[pointer] niet 0 is, spring terug naar de plek voor de vorige [ ipv een vooruit + + break; + + default: + break; + } + } + + } + +} \ No newline at end of file diff --git a/src/main/java/brainfuck/interpreter/Main.java b/src/main/java/brainfuck/interpreter/Main.java new file mode 100644 index 0000000..ce00abd --- /dev/null +++ b/src/main/java/brainfuck/interpreter/Main.java @@ -0,0 +1,21 @@ +package brainfuck.interpreter; + +import java.io.UnsupportedEncodingException; + +/** + * Main + */ +public class Main { + + public static void main(String[] args) { + String excl = "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.>++++++++++++++++++++++++++++++++++++++++++++++++++++."; + + try { + BfInterpreter interpreter = new BfInterpreter(excl); + interpreter.interpret(); + } catch (Exception e) { + e.printStackTrace(); + } + + } +} \ No newline at end of file