]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.spreadsheet.graph/src/org/simantics/spreadsheet/graph/PrintVisitor.java
Introduce new DiagramViewer.getRuntimeFromManager()
[simantics/platform.git] / bundles / org.simantics.spreadsheet.graph / src / org / simantics / spreadsheet / graph / PrintVisitor.java
1 package org.simantics.spreadsheet.graph;
2
3 import java.util.HashSet;
4 import java.util.Set;
5
6 import org.simantics.spreadsheet.Range;
7 import org.simantics.spreadsheet.graph.parser.ast.AstApply;
8 import org.simantics.spreadsheet.graph.parser.ast.AstArgList;
9 import org.simantics.spreadsheet.graph.parser.ast.AstArithmeticExpression;
10 import org.simantics.spreadsheet.graph.parser.ast.AstArray;
11 import org.simantics.spreadsheet.graph.parser.ast.AstArrayFormulaReference;
12 import org.simantics.spreadsheet.graph.parser.ast.AstBoolean;
13 import org.simantics.spreadsheet.graph.parser.ast.AstDouble;
14 import org.simantics.spreadsheet.graph.parser.ast.AstFactor;
15 import org.simantics.spreadsheet.graph.parser.ast.AstIdentifier;
16 import org.simantics.spreadsheet.graph.parser.ast.AstInteger;
17 import org.simantics.spreadsheet.graph.parser.ast.AstNothing;
18 import org.simantics.spreadsheet.graph.parser.ast.AstNull;
19 import org.simantics.spreadsheet.graph.parser.ast.AstRange;
20 import org.simantics.spreadsheet.graph.parser.ast.AstRelation;
21 import org.simantics.spreadsheet.graph.parser.ast.AstString;
22 import org.simantics.spreadsheet.graph.parser.ast.AstTerm;
23 import org.simantics.spreadsheet.graph.parser.ast.AstValue;
24 import org.simantics.spreadsheet.graph.parser.ast.AstValueVisitor;
25 import org.simantics.spreadsheet.util.SpreadsheetUtils;
26
27 public class PrintVisitor implements AstValueVisitor<String> {
28
29         @Override
30         public String visit(AstBoolean astBoolean) {
31                 return "" + astBoolean.value;
32         }
33
34         @Override
35         public String visit(AstDouble astFloat) {
36                 return "" + astFloat.value;
37         }
38
39         @Override
40         public String visit(AstInteger astInteger) {
41                 return "" + astInteger.value;
42         }
43
44         @Override
45         public String visit(AstNull astNull) {
46                 return "AstNull";
47         }
48
49         @Override
50         public String visit(AstString astString) {
51                 return "\"" + astString.value + "\"";  
52         }
53
54         @Override
55         public String visit(AstRange astRange) {
56                 if(astRange.isCell()) {
57                         return astRange.first;
58                 } else {
59                         return astRange.first + ":" + astRange.second;
60                 }
61         }
62
63         @Override
64         public String visit(AstArgList astArgList) {
65                 StringBuilder b = new StringBuilder();
66                 for(int i=0;i<astArgList.values.size();i++) {
67                         if(i > 0) b.append(";");
68                         b.append(astArgList.values.get(i).accept(this));
69                 }
70                 return b.toString();
71         }
72
73         @Override
74         public String visit(AstApply astApply) {
75                 if(astApply.args == null) {
76                         return astApply.value + "()";
77                 } else {
78                         return astApply.value + "(" + astApply.args.accept(this) + ")";
79                 }
80         }
81
82         @Override
83         public String visit(AstRelation astRelation) {
84
85                 StringBuilder b = new StringBuilder();
86                 b.append(astRelation.left.accept(this));
87                 b.append(astRelation.op.trim());
88                 b.append(astRelation.right.accept(this));
89                 return b.toString();
90                 
91         }
92         
93         @Override
94         public String visit(AstArithmeticExpression exp) {
95                 
96                 StringBuilder b = new StringBuilder();
97                 if(exp.prefix != null) b.append(exp.prefix);
98                 
99                 b.append(exp.left.accept(this));
100
101                 for(int i=0;i<exp.rightCount();i++) {
102                         String op = exp.rightOp(i);
103                         b.append(op);
104                         AstValue value = exp.rightValue(i);
105                         b.append(value.accept(this));
106                 }
107                 
108                 return b.toString();
109                 
110         }
111
112         @Override
113         public String visit(AstTerm exp) {
114                 
115                 StringBuilder b = new StringBuilder();
116                 
117                 b.append(exp.left.accept(this));
118
119                 for(int i=0;i<exp.rightCount();i++) {
120                         String op = exp.rightOp(i);
121                         b.append(op);
122                         AstValue value = exp.rightValue(i);
123                         b.append(value.accept(this));
124                 }
125                 
126                 return b.toString();
127                 
128         }
129
130         @Override
131         public String visit(AstFactor exp) {
132                 
133                 StringBuilder b = new StringBuilder();
134                 
135                 b.append(exp.left.accept(this));
136
137                 for(int i=0;i<exp.rightCount();i++) {
138                         String op = exp.rightOp(i);
139                         b.append(op);
140                         AstValue value = exp.rightValue(i);
141                         b.append(value.accept(this));
142                 }
143                 
144                 return b.toString();
145                 
146         }
147
148         @Override
149         public String visit(AstIdentifier id) {
150                 return "AstIdentifier";
151         }
152         
153         @Override
154         public String visit(AstArray array) {
155                 StringBuilder b = new StringBuilder();
156                 for(int i=0;i<array.values.size();i++) {
157                         if(i > 0) b.append(";");
158                         b.append(array.values.get(i).accept(this));
159                 }
160                 return b.toString();
161         }
162         
163         @Override
164         public String visit(AstNothing array) {
165                 return "AstNothing";
166         }
167         
168         @Override
169         public String visit(AstArrayFormulaReference ref) {
170                 return "{" + ref.value.accept(this) + "}";
171         }
172
173 }