package org.simantics.spreadsheet.solver.formula; import org.simantics.spreadsheet.solver.formula.parser.ast.AstApply; import org.simantics.spreadsheet.solver.formula.parser.ast.AstArgList; import org.simantics.spreadsheet.solver.formula.parser.ast.AstArithmeticExpression; import org.simantics.spreadsheet.solver.formula.parser.ast.AstArray; import org.simantics.spreadsheet.solver.formula.parser.ast.AstArrayFormulaReference; import org.simantics.spreadsheet.solver.formula.parser.ast.AstBoolean; import org.simantics.spreadsheet.solver.formula.parser.ast.AstDouble; import org.simantics.spreadsheet.solver.formula.parser.ast.AstFactor; import org.simantics.spreadsheet.solver.formula.parser.ast.AstIdentifier; import org.simantics.spreadsheet.solver.formula.parser.ast.AstInteger; import org.simantics.spreadsheet.solver.formula.parser.ast.AstNothing; import org.simantics.spreadsheet.solver.formula.parser.ast.AstNull; import org.simantics.spreadsheet.solver.formula.parser.ast.AstRange; import org.simantics.spreadsheet.solver.formula.parser.ast.AstRelation; import org.simantics.spreadsheet.solver.formula.parser.ast.AstString; import org.simantics.spreadsheet.solver.formula.parser.ast.AstTerm; import org.simantics.spreadsheet.solver.formula.parser.ast.AstValue; import org.simantics.spreadsheet.solver.formula.parser.ast.AstValueVisitor; public class PrintVisitor implements AstValueVisitor { @Override public String visit(AstBoolean astBoolean) { return "" + astBoolean.value; } @Override public String visit(AstDouble astFloat) { return "" + astFloat.value; } @Override public String visit(AstInteger astInteger) { return "" + astInteger.value; } @Override public String visit(AstNull astNull) { return "AstNull"; } @Override public String visit(AstString astString) { return "\"" + astString.value + "\""; } @Override public String visit(AstRange astRange) { if(astRange.isCell()) { return astRange.first; } else { return astRange.first + ":" + astRange.second; } } @Override public String visit(AstArgList astArgList) { StringBuilder b = new StringBuilder(); for(int i=0;i 0) b.append(";"); b.append(astArgList.values.get(i).accept(this)); } return b.toString(); } @Override public String visit(AstApply astApply) { if(astApply.args == null) { return astApply.value + "()"; } else { return astApply.value + "(" + astApply.args.accept(this) + ")"; } } @Override public String visit(AstRelation astRelation) { StringBuilder b = new StringBuilder(); b.append(astRelation.left.accept(this)); b.append(astRelation.op.trim()); b.append(astRelation.right.accept(this)); return b.toString(); } @Override public String visit(AstArithmeticExpression exp) { StringBuilder b = new StringBuilder(); if(exp.prefix != null) b.append(exp.prefix); b.append(exp.left.accept(this)); for(int i=0;i 0) b.append(";"); b.append(array.values.get(i).accept(this)); } return b.toString(); } @Override public String visit(AstNothing array) { return "AstNothing"; } @Override public String visit(AstArrayFormulaReference ref) { return "{" + ref.value.accept(this) + "}"; } }