]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.spreadsheet.graph/src/org/simantics/spreadsheet/graph/PrintVisitor.java
Changing existing log4j logging to use slf4j
[simantics/platform.git] / bundles / org.simantics.spreadsheet.graph / src / org / simantics / spreadsheet / graph / PrintVisitor.java
1 package org.simantics.spreadsheet.graph;\r
2 \r
3 import java.util.HashSet;\r
4 import java.util.Set;\r
5 \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
26 \r
27 public class PrintVisitor implements AstValueVisitor<String> {\r
28 \r
29         @Override\r
30         public String visit(AstBoolean astBoolean) {\r
31                 return "" + astBoolean.value;\r
32         }\r
33 \r
34         @Override\r
35         public String visit(AstDouble astFloat) {\r
36                 return "" + astFloat.value;\r
37         }\r
38 \r
39         @Override\r
40         public String visit(AstInteger astInteger) {\r
41                 return "" + astInteger.value;\r
42         }\r
43 \r
44         @Override\r
45         public String visit(AstNull astNull) {\r
46                 return "AstNull";\r
47         }\r
48 \r
49         @Override\r
50         public String visit(AstString astString) {\r
51                 return "\"" + astString.value + "\"";  \r
52         }\r
53 \r
54         @Override\r
55         public String visit(AstRange astRange) {\r
56                 if(astRange.isCell()) {\r
57                         return astRange.first;\r
58                 } else {\r
59                         return astRange.first + ":" + astRange.second;\r
60                 }\r
61         }\r
62 \r
63         @Override\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
69                 }\r
70                 return b.toString();\r
71         }\r
72 \r
73         @Override\r
74         public String visit(AstApply astApply) {\r
75                 if(astApply.args == null) {\r
76                         return astApply.value + "()";\r
77                 } else {\r
78                         return astApply.value + "(" + astApply.args.accept(this) + ")";\r
79                 }\r
80         }\r
81 \r
82         @Override\r
83         public String visit(AstRelation astRelation) {\r
84 \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
90                 \r
91         }\r
92         \r
93         @Override\r
94         public String visit(AstArithmeticExpression exp) {\r
95                 \r
96                 StringBuilder b = new StringBuilder();\r
97                 if(exp.prefix != null) b.append(exp.prefix);\r
98                 \r
99                 b.append(exp.left.accept(this));\r
100 \r
101                 for(int i=0;i<exp.rightCount();i++) {\r
102                         String op = exp.rightOp(i);\r
103                         b.append(op);\r
104                         AstValue value = exp.rightValue(i);\r
105                         b.append(value.accept(this));\r
106                 }\r
107                 \r
108                 return b.toString();\r
109                 \r
110         }\r
111 \r
112         @Override\r
113         public String visit(AstTerm exp) {\r
114                 \r
115                 StringBuilder b = new StringBuilder();\r
116                 \r
117                 b.append(exp.left.accept(this));\r
118 \r
119                 for(int i=0;i<exp.rightCount();i++) {\r
120                         String op = exp.rightOp(i);\r
121                         b.append(op);\r
122                         AstValue value = exp.rightValue(i);\r
123                         b.append(value.accept(this));\r
124                 }\r
125                 \r
126                 return b.toString();\r
127                 \r
128         }\r
129 \r
130         @Override\r
131         public String visit(AstFactor exp) {\r
132                 \r
133                 StringBuilder b = new StringBuilder();\r
134                 \r
135                 b.append(exp.left.accept(this));\r
136 \r
137                 for(int i=0;i<exp.rightCount();i++) {\r
138                         String op = exp.rightOp(i);\r
139                         b.append(op);\r
140                         AstValue value = exp.rightValue(i);\r
141                         b.append(value.accept(this));\r
142                 }\r
143                 \r
144                 return b.toString();\r
145                 \r
146         }\r
147 \r
148         @Override\r
149         public String visit(AstIdentifier id) {\r
150                 return "AstIdentifier";\r
151         }\r
152         \r
153         @Override\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
159                 }\r
160                 return b.toString();\r
161         }\r
162         \r
163         @Override\r
164         public String visit(AstNothing array) {\r
165                 return "AstNothing";\r
166         }\r
167         \r
168         @Override\r
169         public String visit(AstArrayFormulaReference ref) {\r
170                 return "{" + ref.value.accept(this) + "}";\r
171         }\r
172 \r
173 }\r