/src/main/java/am/ik/brainfuck/BFProcessor.java
Java | 114 lines | 87 code | 3 blank | 24 comment | 8 complexity | 58c4871ac811d30bceea78e08fcecc36 MD5 | raw file
- package am.ik.brainfuck;
- import java.io.IOException;
- public enum BFProcessor {
- /**
- * >
- */
- INCREMENT_POINTER {
- @Override
- public void process(BFEnvironment env) {
- env.incrementPointer();
- }
- },
- /**
- * <
- */
- DECREMENT_POINTER {
- @Override
- public void process(BFEnvironment env) {
- env.decrementPointer();
- }
- },
- /**
- * +
- */
- INCREMENT_VALUE {
- @Override
- public void process(BFEnvironment env) {
- env.incrementValue();
- }
- },
- /**
- * -
- */
- DECREMENT_VALUE {
- @Override
- public void process(BFEnvironment env) {
- env.decrementValue();
- }
- },
- /**
- * .
- */
- WRITE_VALUE {
- @Override
- public void process(BFEnvironment env) {
- env.getOut().print((char) env.getValue());
- }
- },
- /**
- * ,
- */
- READ_VALUE {
- @Override
- public void process(BFEnvironment env) {
- try {
- env.setValue(env.getIn().read());
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- },
- /**
- * [
- */
- FORWARD {
- @Override
- public void process(BFEnvironment env) {
- if (env.getValue() == 0) {
- env.incrementCurrent();
- for (int brackets = 1; brackets > 0; env.incrementCurrent()) {
- switch (env.getChar()) {
- case '[':
- brackets++;
- break;
- case ']':
- brackets--;
- break;
- default:
- break;
- }
- }
- env.decrementCurrent();
- }
- }
- },
- /**
- * ]
- */
- BACKWARD {
- @Override
- public void process(BFEnvironment env) {
- if (env.getValue() != 0) {
- env.decrementCurrent();
- for (int brackets = 1; brackets > 0; env.decrementCurrent()) {
- switch (env.getChar()) {
- case '[':
- brackets--;
- break;
- case ']':
- brackets++;
- break;
- default:
- break;
- }
- }
- env.incrementCurrent();
- }
- }
- };
- abstract public void process(BFEnvironment env);
- }