| @@ -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); | ||||
| } | } | ||||
| } | } | ||||
| @@ -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); | ||||
| } | } | ||||
| } | } | ||||
| @@ -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)); | |||||
| } | } | ||||
| } | } | ||||
| @@ -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)); | |||||
| } | } | ||||
| } | } | ||||