X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=bundles%2Forg.simantics.spreadsheet%2Fsrc%2Forg%2Fsimantics%2Fspreadsheet%2Fsolver%2Fformula%2Fparser%2Fast%2FAstList.java;fp=bundles%2Forg.simantics.spreadsheet%2Fsrc%2Forg%2Fsimantics%2Fspreadsheet%2Fsolver%2Fformula%2Fparser%2Fast%2FAstList.java;h=43ef6d3b101ae6c35afd679fa3538bd3be2f76ca;hb=5c67a96d34fe904b8c4b0375cd08ff1d543bf369;hp=0000000000000000000000000000000000000000;hpb=9a37dabc6c0212ed3e14499c88df3208cd06f9b0;p=simantics%2Fplatform.git 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 index 000000000..43ef6d3b1 --- /dev/null +++ b/bundles/org.simantics.spreadsheet/src/org/simantics/spreadsheet/solver/formula/parser/ast/AstList.java @@ -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 rightOps; + public ArrayList 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; + } + +}