X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=bundles%2Forg.simantics.spreadsheet.graph%2Fsrc%2Forg%2Fsimantics%2Fspreadsheet%2Fgraph%2Fparser%2Fast%2FAstList.java;fp=bundles%2Forg.simantics.spreadsheet.graph%2Fsrc%2Forg%2Fsimantics%2Fspreadsheet%2Fgraph%2Fparser%2Fast%2FAstList.java;h=55cba4237478b8cc236c63cdb4e25303674592d4;hb=969bd23cab98a79ca9101af33334000879fb60c5;hp=0000000000000000000000000000000000000000;hpb=866dba5cd5a3929bbeae85991796acb212338a08;p=simantics%2Fplatform.git 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 index 000000000..55cba4237 --- /dev/null +++ b/bundles/org.simantics.spreadsheet.graph/src/org/simantics/spreadsheet/graph/parser/ast/AstList.java @@ -0,0 +1,43 @@ +package org.simantics.spreadsheet.graph.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; + } + +}