]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.spreadsheet/src/org/simantics/spreadsheet/solver/formula/parser/ast/AstList.java
Adopt spreadsheet changes made in Balas development
[simantics/platform.git] / bundles / org.simantics.spreadsheet / src / org / simantics / spreadsheet / solver / formula / parser / ast / AstList.java
diff --git a/bundles/org.simantics.spreadsheet/src/org/simantics/spreadsheet/solver/formula/parser/ast/AstList.java b/bundles/org.simantics.spreadsheet/src/org/simantics/spreadsheet/solver/formula/parser/ast/AstList.java
new file mode 100644 (file)
index 0000000..43ef6d3
--- /dev/null
@@ -0,0 +1,43 @@
+package org.simantics.spreadsheet.solver.formula.parser.ast;
+
+import java.util.ArrayList;
+
+abstract public class AstList implements AstValue {
+
+       public final AstValue left;
+
+       public ArrayList<String> rightOps;
+       public ArrayList<AstValue> rightValues;
+       
+       public AstList(AstValue left) {
+               this.left = left;
+       }
+       
+       public int rightCount() {
+               if(rightValues == null) return 0;
+               return rightValues.size();
+       }
+       
+       public String rightOp(int index) {
+               return rightOps.get(index);
+       }
+       
+       public AstValue rightValue(int index) {
+               return rightValues.get(index);
+       }
+
+       public void add(String op, AstValue value) {
+               if(rightValues == null) {
+                       rightOps = new ArrayList<>(); 
+                       rightValues = new ArrayList<>();
+               }
+               rightOps.add(op);
+               rightValues.add(value);
+       }
+
+       public AstValue simplify() {
+               if(rightValues == null) return left;
+               return this;
+       }
+
+}