1 package org.simantics.spreadsheet.graph;
\r
3 import java.util.HashSet;
\r
4 import java.util.Set;
\r
6 import org.simantics.spreadsheet.Range;
\r
7 import org.simantics.spreadsheet.graph.parser.ast.AstApply;
\r
8 import org.simantics.spreadsheet.graph.parser.ast.AstArgList;
\r
9 import org.simantics.spreadsheet.graph.parser.ast.AstArithmeticExpression;
\r
10 import org.simantics.spreadsheet.graph.parser.ast.AstArray;
\r
11 import org.simantics.spreadsheet.graph.parser.ast.AstArrayFormulaReference;
\r
12 import org.simantics.spreadsheet.graph.parser.ast.AstBoolean;
\r
13 import org.simantics.spreadsheet.graph.parser.ast.AstDouble;
\r
14 import org.simantics.spreadsheet.graph.parser.ast.AstFactor;
\r
15 import org.simantics.spreadsheet.graph.parser.ast.AstIdentifier;
\r
16 import org.simantics.spreadsheet.graph.parser.ast.AstInteger;
\r
17 import org.simantics.spreadsheet.graph.parser.ast.AstNothing;
\r
18 import org.simantics.spreadsheet.graph.parser.ast.AstNull;
\r
19 import org.simantics.spreadsheet.graph.parser.ast.AstRange;
\r
20 import org.simantics.spreadsheet.graph.parser.ast.AstRelation;
\r
21 import org.simantics.spreadsheet.graph.parser.ast.AstString;
\r
22 import org.simantics.spreadsheet.graph.parser.ast.AstTerm;
\r
23 import org.simantics.spreadsheet.graph.parser.ast.AstValue;
\r
24 import org.simantics.spreadsheet.graph.parser.ast.AstValueVisitor;
\r
25 import org.simantics.spreadsheet.util.SpreadsheetUtils;
\r
27 public class PrintVisitor implements AstValueVisitor<String> {
\r
30 public String visit(AstBoolean astBoolean) {
\r
31 return "" + astBoolean.value;
\r
35 public String visit(AstDouble astFloat) {
\r
36 return "" + astFloat.value;
\r
40 public String visit(AstInteger astInteger) {
\r
41 return "" + astInteger.value;
\r
45 public String visit(AstNull astNull) {
\r
50 public String visit(AstString astString) {
\r
51 return "\"" + astString.value + "\"";
\r
55 public String visit(AstRange astRange) {
\r
56 if(astRange.isCell()) {
\r
57 return astRange.first;
\r
59 return astRange.first + ":" + astRange.second;
\r
64 public String visit(AstArgList astArgList) {
\r
65 StringBuilder b = new StringBuilder();
\r
66 for(int i=0;i<astArgList.values.size();i++) {
\r
67 if(i > 0) b.append(";");
\r
68 b.append(astArgList.values.get(i).accept(this));
\r
70 return b.toString();
\r
74 public String visit(AstApply astApply) {
\r
75 if(astApply.args == null) {
\r
76 return astApply.value + "()";
\r
78 return astApply.value + "(" + astApply.args.accept(this) + ")";
\r
83 public String visit(AstRelation astRelation) {
\r
85 StringBuilder b = new StringBuilder();
\r
86 b.append(astRelation.left.accept(this));
\r
87 b.append(astRelation.op.trim());
\r
88 b.append(astRelation.right.accept(this));
\r
89 return b.toString();
\r
94 public String visit(AstArithmeticExpression exp) {
\r
96 StringBuilder b = new StringBuilder();
\r
97 if(exp.prefix != null) b.append(exp.prefix);
\r
99 b.append(exp.left.accept(this));
\r
101 for(int i=0;i<exp.rightCount();i++) {
\r
102 String op = exp.rightOp(i);
\r
104 AstValue value = exp.rightValue(i);
\r
105 b.append(value.accept(this));
\r
108 return b.toString();
\r
113 public String visit(AstTerm exp) {
\r
115 StringBuilder b = new StringBuilder();
\r
117 b.append(exp.left.accept(this));
\r
119 for(int i=0;i<exp.rightCount();i++) {
\r
120 String op = exp.rightOp(i);
\r
122 AstValue value = exp.rightValue(i);
\r
123 b.append(value.accept(this));
\r
126 return b.toString();
\r
131 public String visit(AstFactor exp) {
\r
133 StringBuilder b = new StringBuilder();
\r
135 b.append(exp.left.accept(this));
\r
137 for(int i=0;i<exp.rightCount();i++) {
\r
138 String op = exp.rightOp(i);
\r
140 AstValue value = exp.rightValue(i);
\r
141 b.append(value.accept(this));
\r
144 return b.toString();
\r
149 public String visit(AstIdentifier id) {
\r
150 return "AstIdentifier";
\r
154 public String visit(AstArray array) {
\r
155 StringBuilder b = new StringBuilder();
\r
156 for(int i=0;i<array.values.size();i++) {
\r
157 if(i > 0) b.append(";");
\r
158 b.append(array.values.get(i).accept(this));
\r
160 return b.toString();
\r
164 public String visit(AstNothing array) {
\r
165 return "AstNothing";
\r
169 public String visit(AstArrayFormulaReference ref) {
\r
170 return "{" + ref.value.accept(this) + "}";
\r