The ExpressionPrinter
is used for string serialization of a given Expression
.
package printer;
import expression.*;
import interpreter.Visitor;
public class ExpressionPrinter extends Visitor<String> {
public String visitAddition(Addition addition) {
return visit(addition.leftHandSide) + " + " + visit(addition.rightHandSide);
}
public String visitIdentifier(Identifier identifier) {
return identifier.name;
}
public String visitInt(Int integer) {
return Integer.toString(integer.value);
}
public String visitSubtraction(Subtraction subtraction) {
return visit(subtraction.leftHandSide) + " - " + visit(subtraction.rightHandSide);
}
The print
function takes an Expression
instance as an argument and returns the string serialization of the given expression.
public String print(Expression expression) {
return visit(expression);
}
}