Browse Source

Minor simplifications

dependabot/maven/junit-junit-4.13.1
Malte Schmitz 9 years ago
parent
commit
ca4bbab971
4 changed files with 23 additions and 32 deletions
  1. +3
    -4
      src/main/java/printer/ExpressionPrinter.java
  2. +8
    -10
      src/main/java/printer/ProgramPrinter.java
  3. +5
    -8
      src/test/java/printer/ExpressionPrinterTest.java
  4. +7
    -10
      src/test/java/printer/ProgramPrinterTest.java

+ 3
- 4
src/main/java/printer/ExpressionPrinter.java View File

@@ -18,7 +18,6 @@ The `ExpressionPrinter` implements the string serialization with the help of the
[Visitor](${basePath}/src/main/java/interpreter/Visitor.java.html). [Visitor](${basePath}/src/main/java/interpreter/Visitor.java.html).
*/ */
public class ExpressionPrinter extends Visitor<String> { public class ExpressionPrinter extends Visitor<String> {
/*!- Visit functions */
public String visitAddition(Addition addition) { public String visitAddition(Addition addition) {
return visit(addition.leftHandSide) + " + " + visit(addition.rightHandSide); return visit(addition.leftHandSide) + " + " + visit(addition.rightHandSide);
} }
@@ -36,10 +35,10 @@ public class ExpressionPrinter extends Visitor<String> {
} }


/*! /*!
The `getValue` function takes an `Expression` instance as an argument and returns
the string serialisation of the given expression.
The `print` function takes an `Expression` instance as an argument and returns
the string serialization of the given expression.
*/ */
public String getValue(Expression expression) {
public String print(Expression expression) {
return visit(expression); return visit(expression);
} }
} }

+ 8
- 10
src/main/java/printer/ProgramPrinter.java View File

@@ -18,10 +18,10 @@ The `ProgramPrinter` implements the string serialization with the help of the
[Visitor](${basePath}/src/main/java/interpreter/Visitor.java.html). [Visitor](${basePath}/src/main/java/interpreter/Visitor.java.html).
*/ */
public class ProgramPrinter extends Visitor<String> { public class ProgramPrinter extends Visitor<String> {
/*!- Visit functions */
private final ExpressionPrinter printer = new ExpressionPrinter();

public String visitAssignment(Assignment assignment) { public String visitAssignment(Assignment assignment) {
ExpressionPrinter printer = new ExpressionPrinter();
return printer.getValue(assignment.identifier) + " := " + printer.getValue(assignment.expression);
return printer.print(assignment.identifier) + " := " + printer.print(assignment.expression);
} }


public String visitComposition(Composition composition) { public String visitComposition(Composition composition) {
@@ -29,20 +29,18 @@ public class ProgramPrinter extends Visitor<String> {
} }


public String visitConditional(Conditional conditional) { public String visitConditional(Conditional conditional) {
ExpressionPrinter printer = new ExpressionPrinter();
return "if (" + printer.getValue(conditional.condition) + ") then { " + visit(conditional.thenCase) + " } else { " + visit(conditional.elseCase) + " }";
return "if (" + printer.print(conditional.condition) + ") then { " + visit(conditional.thenCase) + " } else { " + visit(conditional.elseCase) + " }";
} }


public String visitLoop(Loop loop) { public String visitLoop(Loop loop) {
ExpressionPrinter printer = new ExpressionPrinter();
return "while (" + printer.getValue(loop.condition) + ") { " + visit(loop.program) + " }";
return "while (" + printer.print(loop.condition) + ") { " + visit(loop.program) + " }";
} }


/*! /*!
The `getValue` function takes a `Program` instance as an argument and returns
the string serialisation of the given program.
The `print` function takes a `Program` instance as an argument and returns
the string serialization of the given program.
*/ */
public String getValue(Program program) {
public String print(Program program) {
return visit(program); return visit(program);
} }
} }

+ 5
- 8
src/test/java/printer/ExpressionPrinterTest.java View File

@@ -18,29 +18,26 @@ public class ExpressionPrinterTest {
final String subtractionCode = "1 - a"; final String subtractionCode = "1 - a";
final Subtraction subtraction = new Subtraction(new Int(1), new Identifier("a")); final Subtraction subtraction = new Subtraction(new Int(1), new Identifier("a"));


final ExpressionPrinter printer = new ExpressionPrinter();


@Test @Test
public void testVisitAddition() { public void testVisitAddition() {
ExpressionPrinter printer = new ExpressionPrinter();
assertEquals(additionCode, printer.getValue(addition));
assertEquals(additionCode, printer.print(addition));
} }


@Test @Test
public void testVisitIdentifier() { public void testVisitIdentifier() {
ExpressionPrinter printer = new ExpressionPrinter();
assertEquals(identifierCode, printer.getValue(identifier));
assertEquals(identifierCode, printer.print(identifier));
} }


@Test @Test
public void testVisitInt() { public void testVisitInt() {
ExpressionPrinter printer = new ExpressionPrinter();
assertEquals(integerCode, printer.getValue(integer));
assertEquals(integerCode, printer.print(integer));
} }


@Test @Test
public void testVisitSubtraction() { public void testVisitSubtraction() {
ExpressionPrinter printer = new ExpressionPrinter();
assertEquals(subtractionCode, printer.getValue(subtraction));
assertEquals(subtractionCode, printer.print(subtraction));
} }


} }

+ 7
- 10
src/test/java/printer/ProgramPrinterTest.java View File

@@ -25,34 +25,31 @@ public class ProgramPrinterTest {
final String programCode = compositionCode + " ; " + loopCode + " ; " + conditionalCode; final String programCode = compositionCode + " ; " + loopCode + " ; " + conditionalCode;
final Program program = new Composition(new Composition(composition, loop), conditional); final Program program = new Composition(new Composition(composition, loop), conditional);


final ProgramPrinter printer = new ProgramPrinter();

@Test @Test
public void testVisitAssignment() { public void testVisitAssignment() {
ProgramPrinter printer = new ProgramPrinter();
assertEquals(assignmentCode, printer.getValue(assignment));
assertEquals(assignmentCode, printer.print(assignment));
} }


@Test @Test
public void testVisitComposition() { public void testVisitComposition() {
ProgramPrinter printer = new ProgramPrinter();
assertEquals(compositionCode, printer.getValue(composition));
assertEquals(compositionCode, printer.print(composition));
} }


@Test @Test
public void testVisitConditional() { public void testVisitConditional() {
ProgramPrinter printer = new ProgramPrinter();
assertEquals(conditionalCode, printer.getValue(conditional));
assertEquals(conditionalCode, printer.print(conditional));
} }


@Test @Test
public void testVisitLoop() { public void testVisitLoop() {
ProgramPrinter printer = new ProgramPrinter();
assertEquals(loopCode, printer.getValue(loop));
assertEquals(loopCode, printer.print(loop));
} }


@Test @Test
public void testVisitProgram() { public void testVisitProgram() {
ProgramPrinter printer = new ProgramPrinter();
assertEquals(programCode, printer.getValue(program));
assertEquals(programCode, printer.print(program));
} }


} }

Loading…
Cancel
Save