/* * This file is part of JGAP. * * JGAP offers a dual license model containing the LGPL as well as the MPL. * * For licensing information please see the file license.txt included with JGAP * or have a look at the top of class org.jgap.Chromosome which representatively * includes the JGAP license policy applicable for any file delivered with JGAP. */ package examples.math; import examples.math.cmd.*; /** * Only used in MathGene.toString(). * * @author Michael Grove * @since 3.4.2 */ @Deprecated public class ReplVisitor implements MathVisitor { /** String containing the CVS revision. Read out via reflection!*/ private final static String CVS_REVISION = "$Revision: 1.1 $"; private StringBuffer mBuffer = new StringBuffer(); public void reset() { mBuffer = new StringBuffer(); } public String render(Operand theOp) { if (theOp != null) { theOp.accept(this); } return mBuffer.toString(); } public void visit(ValueOperand theOp) { mBuffer.append(" ").append(theOp.value()).append(" "); } public void visit(AddOperator theOp) { mBuffer.append("("); theOp.getLeftOperand().accept(this); mBuffer.append(" + "); theOp.getRightOperand().accept(this); mBuffer.append(")"); } public void visit(MinusOperator theOp) { mBuffer.append("("); theOp.getLeftOperand().accept(this); mBuffer.append(" - "); theOp.getRightOperand().accept(this); mBuffer.append(")"); } public void visit(DivideOperator theOp) { mBuffer.append("("); theOp.getLeftOperand().accept(this); mBuffer.append(" / "); theOp.getRightOperand().accept(this); mBuffer.append(")"); } public void visit(MultiplyOperator theOp) { mBuffer.append("("); theOp.getLeftOperand().accept(this); mBuffer.append(" * "); theOp.getRightOperand().accept(this); mBuffer.append(")"); } public static void main(String[] args) { Operand aExpr1 = new AddOperator(new ValueOperand(4), new ValueOperand(20)); Operand aExpr2 = new DivideOperator(new MinusOperator(new ValueOperand(34.3), new MultiplyOperator(new ValueOperand(2), new ValueOperand(37))), aExpr1); System.err.println(new ReplVisitor().render(aExpr1) + " = " + aExpr1.value()); System.err.println(new ReplVisitor().render(aExpr2) + " = " + aExpr2.value()); } }