-package org.simantics.spreadsheet.graph;\r
-\r
-import java.util.HashSet;\r
-import java.util.Set;\r
-\r
-import org.simantics.spreadsheet.Range;\r
-import org.simantics.spreadsheet.graph.parser.ast.AstApply;\r
-import org.simantics.spreadsheet.graph.parser.ast.AstArgList;\r
-import org.simantics.spreadsheet.graph.parser.ast.AstArithmeticExpression;\r
-import org.simantics.spreadsheet.graph.parser.ast.AstArray;\r
-import org.simantics.spreadsheet.graph.parser.ast.AstArrayFormulaReference;\r
-import org.simantics.spreadsheet.graph.parser.ast.AstBoolean;\r
-import org.simantics.spreadsheet.graph.parser.ast.AstDouble;\r
-import org.simantics.spreadsheet.graph.parser.ast.AstFactor;\r
-import org.simantics.spreadsheet.graph.parser.ast.AstIdentifier;\r
-import org.simantics.spreadsheet.graph.parser.ast.AstInteger;\r
-import org.simantics.spreadsheet.graph.parser.ast.AstNothing;\r
-import org.simantics.spreadsheet.graph.parser.ast.AstNull;\r
-import org.simantics.spreadsheet.graph.parser.ast.AstRange;\r
-import org.simantics.spreadsheet.graph.parser.ast.AstRelation;\r
-import org.simantics.spreadsheet.graph.parser.ast.AstString;\r
-import org.simantics.spreadsheet.graph.parser.ast.AstTerm;\r
-import org.simantics.spreadsheet.graph.parser.ast.AstValue;\r
-import org.simantics.spreadsheet.graph.parser.ast.AstValueVisitor;\r
-import org.simantics.spreadsheet.util.SpreadsheetUtils;\r
-\r
-public class PrintVisitor implements AstValueVisitor<String> {\r
-\r
- @Override\r
- public String visit(AstBoolean astBoolean) {\r
- return "" + astBoolean.value;\r
- }\r
-\r
- @Override\r
- public String visit(AstDouble astFloat) {\r
- return "" + astFloat.value;\r
- }\r
-\r
- @Override\r
- public String visit(AstInteger astInteger) {\r
- return "" + astInteger.value;\r
- }\r
-\r
- @Override\r
- public String visit(AstNull astNull) {\r
- return "AstNull";\r
- }\r
-\r
- @Override\r
- public String visit(AstString astString) {\r
- return "\"" + astString.value + "\""; \r
- }\r
-\r
- @Override\r
- public String visit(AstRange astRange) {\r
- if(astRange.isCell()) {\r
- return astRange.first;\r
- } else {\r
- return astRange.first + ":" + astRange.second;\r
- }\r
- }\r
-\r
- @Override\r
- public String visit(AstArgList astArgList) {\r
- StringBuilder b = new StringBuilder();\r
- for(int i=0;i<astArgList.values.size();i++) {\r
- if(i > 0) b.append(";");\r
- b.append(astArgList.values.get(i).accept(this));\r
- }\r
- return b.toString();\r
- }\r
-\r
- @Override\r
- public String visit(AstApply astApply) {\r
- if(astApply.args == null) {\r
- return astApply.value + "()";\r
- } else {\r
- return astApply.value + "(" + astApply.args.accept(this) + ")";\r
- }\r
- }\r
-\r
- @Override\r
- public String visit(AstRelation astRelation) {\r
-\r
- StringBuilder b = new StringBuilder();\r
- b.append(astRelation.left.accept(this));\r
- b.append(astRelation.op.trim());\r
- b.append(astRelation.right.accept(this));\r
- return b.toString();\r
- \r
- }\r
- \r
- @Override\r
- public String visit(AstArithmeticExpression exp) {\r
- \r
- StringBuilder b = new StringBuilder();\r
- if(exp.prefix != null) b.append(exp.prefix);\r
- \r
- b.append(exp.left.accept(this));\r
-\r
- for(int i=0;i<exp.rightCount();i++) {\r
- String op = exp.rightOp(i);\r
- b.append(op);\r
- AstValue value = exp.rightValue(i);\r
- b.append(value.accept(this));\r
- }\r
- \r
- return b.toString();\r
- \r
- }\r
-\r
- @Override\r
- public String visit(AstTerm exp) {\r
- \r
- StringBuilder b = new StringBuilder();\r
- \r
- b.append(exp.left.accept(this));\r
-\r
- for(int i=0;i<exp.rightCount();i++) {\r
- String op = exp.rightOp(i);\r
- b.append(op);\r
- AstValue value = exp.rightValue(i);\r
- b.append(value.accept(this));\r
- }\r
- \r
- return b.toString();\r
- \r
- }\r
-\r
- @Override\r
- public String visit(AstFactor exp) {\r
- \r
- StringBuilder b = new StringBuilder();\r
- \r
- b.append(exp.left.accept(this));\r
-\r
- for(int i=0;i<exp.rightCount();i++) {\r
- String op = exp.rightOp(i);\r
- b.append(op);\r
- AstValue value = exp.rightValue(i);\r
- b.append(value.accept(this));\r
- }\r
- \r
- return b.toString();\r
- \r
- }\r
-\r
- @Override\r
- public String visit(AstIdentifier id) {\r
- return "AstIdentifier";\r
- }\r
- \r
- @Override\r
- public String visit(AstArray array) {\r
- StringBuilder b = new StringBuilder();\r
- for(int i=0;i<array.values.size();i++) {\r
- if(i > 0) b.append(";");\r
- b.append(array.values.get(i).accept(this));\r
- }\r
- return b.toString();\r
- }\r
- \r
- @Override\r
- public String visit(AstNothing array) {\r
- return "AstNothing";\r
- }\r
- \r
- @Override\r
- public String visit(AstArrayFormulaReference ref) {\r
- return "{" + ref.value.accept(this) + "}";\r
- }\r
-\r
-}\r
+package org.simantics.spreadsheet.graph;
+
+import java.util.HashSet;
+import java.util.Set;
+
+import org.simantics.spreadsheet.Range;
+import org.simantics.spreadsheet.graph.parser.ast.AstApply;
+import org.simantics.spreadsheet.graph.parser.ast.AstArgList;
+import org.simantics.spreadsheet.graph.parser.ast.AstArithmeticExpression;
+import org.simantics.spreadsheet.graph.parser.ast.AstArray;
+import org.simantics.spreadsheet.graph.parser.ast.AstArrayFormulaReference;
+import org.simantics.spreadsheet.graph.parser.ast.AstBoolean;
+import org.simantics.spreadsheet.graph.parser.ast.AstDouble;
+import org.simantics.spreadsheet.graph.parser.ast.AstFactor;
+import org.simantics.spreadsheet.graph.parser.ast.AstIdentifier;
+import org.simantics.spreadsheet.graph.parser.ast.AstInteger;
+import org.simantics.spreadsheet.graph.parser.ast.AstNothing;
+import org.simantics.spreadsheet.graph.parser.ast.AstNull;
+import org.simantics.spreadsheet.graph.parser.ast.AstRange;
+import org.simantics.spreadsheet.graph.parser.ast.AstRelation;
+import org.simantics.spreadsheet.graph.parser.ast.AstString;
+import org.simantics.spreadsheet.graph.parser.ast.AstTerm;
+import org.simantics.spreadsheet.graph.parser.ast.AstValue;
+import org.simantics.spreadsheet.graph.parser.ast.AstValueVisitor;
+import org.simantics.spreadsheet.util.SpreadsheetUtils;
+
+public class PrintVisitor implements AstValueVisitor<String> {
+
+ @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<astArgList.values.size();i++) {
+ if(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<exp.rightCount();i++) {
+ String op = exp.rightOp(i);
+ b.append(op);
+ AstValue value = exp.rightValue(i);
+ b.append(value.accept(this));
+ }
+
+ return b.toString();
+
+ }
+
+ @Override
+ public String visit(AstTerm exp) {
+
+ StringBuilder b = new StringBuilder();
+
+ b.append(exp.left.accept(this));
+
+ for(int i=0;i<exp.rightCount();i++) {
+ String op = exp.rightOp(i);
+ b.append(op);
+ AstValue value = exp.rightValue(i);
+ b.append(value.accept(this));
+ }
+
+ return b.toString();
+
+ }
+
+ @Override
+ public String visit(AstFactor exp) {
+
+ StringBuilder b = new StringBuilder();
+
+ b.append(exp.left.accept(this));
+
+ for(int i=0;i<exp.rightCount();i++) {
+ String op = exp.rightOp(i);
+ b.append(op);
+ AstValue value = exp.rightValue(i);
+ b.append(value.accept(this));
+ }
+
+ return b.toString();
+
+ }
+
+ @Override
+ public String visit(AstIdentifier id) {
+ return "AstIdentifier";
+ }
+
+ @Override
+ public String visit(AstArray array) {
+ StringBuilder b = new StringBuilder();
+ for(int i=0;i<array.values.size();i++) {
+ if(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) + "}";
+ }
+
+}