]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.spreadsheet.graph/src/org/simantics/spreadsheet/graph/parser/ast/AstList.java
Migrated source code from Simantics SVN
[simantics/platform.git] / bundles / org.simantics.spreadsheet.graph / src / org / simantics / spreadsheet / graph / parser / ast / AstList.java
diff --git a/bundles/org.simantics.spreadsheet.graph/src/org/simantics/spreadsheet/graph/parser/ast/AstList.java b/bundles/org.simantics.spreadsheet.graph/src/org/simantics/spreadsheet/graph/parser/ast/AstList.java
new file mode 100644 (file)
index 0000000..55cba42
--- /dev/null
@@ -0,0 +1,43 @@
+package org.simantics.spreadsheet.graph.parser.ast;\r
+\r
+import java.util.ArrayList;\r
+\r
+abstract public class AstList implements AstValue {\r
+\r
+       public final AstValue left;\r
+\r
+       public ArrayList<String> rightOps;\r
+       public ArrayList<AstValue> rightValues;\r
+       \r
+       public AstList(AstValue left) {\r
+               this.left = left;\r
+       }\r
+       \r
+       public int rightCount() {\r
+               if(rightValues == null) return 0;\r
+               return rightValues.size();\r
+       }\r
+       \r
+       public String rightOp(int index) {\r
+               return rightOps.get(index);\r
+       }\r
+       \r
+       public AstValue rightValue(int index) {\r
+               return rightValues.get(index);\r
+       }\r
+\r
+       public void add(String op, AstValue value) {\r
+               if(rightValues == null) {\r
+                       rightOps = new ArrayList<>(); \r
+                       rightValues = new ArrayList<>();\r
+               }\r
+               rightOps.add(op);\r
+               rightValues.add(value);\r
+       }\r
+\r
+       public AstValue simplify() {\r
+               if(rightValues == null) return left;\r
+               return this;\r
+       }\r
+\r
+}\r